亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

makefile不同的編譯器生成多個中間文件

2019-11-14 08:53:34
字體:
來源:轉載
供稿:網友

makefile不同的代碼進行不同的編譯,比如cuda代碼中想將cpp代碼和cu代碼分開分別編譯成.o文件,再將.o文件編譯成一個哭文件或者可執行文件,這時可能cpp和cuda的編譯器不一樣,那么就不能夠使用自動推導,當然,也可以將兩個編譯器組合成一個編譯器,讓系統根據代碼自己去選擇相應的編譯器,這里將的是如果想分開的話,應該怎么做?

首先,假設這里有3個cpp文件,2個cu文件:

a.cpp ,b.cpp,d.cppkernel1.cu,kernel2.cu

首先獲取相應的文件名稱以及去掉后綴后的文件名:

SRC :=$(wildcard *.cpp)OBJ :=$(SRC:%.cpp=%.o)NAM :=$(foreach src,$(SRC),$(eval NAM += $$(shell basename $(src) .cpp));)

然后將不同的代碼進行編譯

gen_cpp: $(foreach n, $(NAM), $(EXEC) $(HOST_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o ${n}.o -c $(n).cpp;)

上面的代碼就會自動生成相應的.o文件 同樣,對cu代碼:

SRC_CU :=$(wildcard *.cu)OBJ_CU :=$(SRC_CU:%.cu=%.o)NAM_CU :=$(foreach src,$(SRC_CU),$(eval NAM_CU += $$(shell basename $(src) .cu));)#下面這句和上面這句一樣,不同的是,使用的是makefile自己的basename變量:#shell的basename是去掉路徑的前綴,一般結合pwd可以用來獲取目錄名,在后面加上.cu可以再去掉后綴#而makefile中的basename是用來去掉后綴的$(foreach src,$(SRC_CU),$(eval NAM_CU += $$(basename $(src)));)

然后將不同的代碼進行編譯

gen_cu: $(foreach n, $(NAM_CU), $(NVCC) $(INCLUDES) $(ALL_CCFLAGS) -o ${n}.o -c $(n).cu;)

最后,完整的代碼:

.PHONY : gen_cpp gen_cu#注意,這里gen_cpp,gen_cu一定要先放在build的前面,因為build會依賴這兩項生成的中間文件all: gen_cpp gen_cu buildSRC :=$(wildcard *.cpp)OBJ :=$(SRC:%.cpp=%.o)NAM :=$(foreach src,$(SRC),$(eval NAM += $$(shell basename $(src) .cpp));)gen_cpp: $(foreach n, $(NAM), $(EXEC) $(HOST_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o ${n}.o -c $(n).cpp;)SRC_CU :=$(wildcard *.cu)OBJ_CU :=$(SRC_CU:%.cu=%.o)NAM_CU :=$(foreach src,$(SRC_CU),$(eval NAM_CU += $$(shell basename $(src) .cu));)gen_cu: $(foreach n, $(NAM_CU), $(NVCC) $(INCLUDES) $(ALL_CCFLAGS) -o ${n}.o -c $(n).cu;)build : target.sotarget:$(gen_cpp) $(gen_cu) $(ALL_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ -shared $^

還有一種更簡單的模式規則可以使用,相比上面,下面代碼的好處是,由于需要生成的目標是實際存在的,因此,如果編譯時間較長時,上面這種方法由于是偽目標,每次都需要重新進行編譯,會很耗時,而下面這種,只會編譯更改后的源文件:

#注意,這里gen_cpp,gen_cu一定要先放在build的前面,因為build會依賴這兩項生成的中間文件SRC :=$(wildcard *.cpp)OBJ :=$(SRC:%.cpp=%.o)SRC_CU :=$(wildcard *.cu)OBJ_CU :=$(SRC_CU:%.cu=%.o)all: $(OBJ_CU) $(OBJ) target.so$(OBJ_CU):%.o:%.cu $(NVCC_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^$(OBJ):%.o:%.cpp $(HOST_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^target.so:$(OBJ_CU) $(OBJ) $(ALL_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^

注意如果將上面的

$(OBJ_CU):%.o:%.cu $(NVCC_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^$(OBJ):%.o:%.cpp $(HOST_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^

更改成

$(OBJ_CU):$(SRC_CU) $(NVCC_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^$(OBJ):$(SRC) $(HOST_COMPLIER) $(INCLUDES) $(ALL_CCFLAGS) -o $@ $^

看似是正確的,實際上會報錯


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美特级www| 粉嫩av一区二区三区免费野| 精品综合久久久久久97| 亚洲精品午夜精品| 久久精品国产精品亚洲| 懂色aⅴ精品一区二区三区蜜月| 久久久久久伊人| 搡老女人一区二区三区视频tv| 亚洲欧美日韩区| 欧美一级免费视频| 一区二区三区 在线观看视| 日韩视频免费大全中文字幕| 日韩av综合网站| 欧洲成人性视频| 色樱桃影院亚洲精品影院| 日韩电影第一页| 亚洲丁香久久久| 欧美在线性爱视频| 成人国产精品av| 在线激情影院一区| 9.1国产丝袜在线观看| 国产日韩中文字幕在线| 精品久久久久久中文字幕大豆网| 国产精品96久久久久久| 国产午夜精品全部视频在线播放| 国产精品免费一区二区三区都可以| 亚洲人在线视频| 狠狠操狠狠色综合网| 51久久精品夜色国产麻豆| 久久久久久久国产精品视频| 欧美日韩国产成人在线| 大胆欧美人体视频| 成人日韩av在线| 国产精品黄色影片导航在线观看| 韩日精品中文字幕| 超碰精品一区二区三区乱码| 精品国产欧美成人夜夜嗨| 亚洲男人av在线| 精品视频中文字幕| 国产亚洲精品久久久久久777| 亚洲第一色中文字幕| 97在线看免费观看视频在线观看| 国产精品一区二区久久久久| 国产日韩欧美成人| 久久99青青精品免费观看| 日韩欧美中文字幕在线播放| 久久综合亚洲社区| 成人淫片在线看| 都市激情亚洲色图| 成人国产精品一区| 精品国产欧美成人夜夜嗨| 亚洲精品久久久久久久久| 91久久精品在线| 国产伦精品一区二区三区精品视频| 久久精品中文字幕电影| 91精品综合久久久久久五月天| 精品国产一区二区三区久久久狼| 亚洲一级免费视频| 亚洲自拍欧美另类| 精品国产91久久久久久老师| 操日韩av在线电影| 亚洲永久在线观看| 81精品国产乱码久久久久久| 久久久久北条麻妃免费看| 中文字幕亚洲欧美一区二区三区| 欧美在线一区二区三区四| 亚洲精品久久久久中文字幕二区| 91精品国产91久久久久久不卡| 日韩中文综合网| 欧美有码在线视频| 亚洲www永久成人夜色| 成人午夜黄色影院| 久久这里只有精品99| xvideos成人免费中文版| 亚洲欧美日韩中文在线| 日韩经典一区二区三区| 亚洲激情久久久| 欧美一级电影在线| 97精品在线观看| 欧美性猛交xxxx免费看| 久久久久久久影院| 日韩av大片免费看| 欧美中文字幕视频在线观看| 亚洲国产精品成人一区二区| 亚洲视频欧洲视频| 91精品国产自产在线观看永久| 亚洲精品成人免费| 91精品国产综合久久香蕉的用户体验| 欧美日韩在线另类| 在线观看久久久久久| 欧美精品久久久久久久久久| 亚洲白虎美女被爆操| 国产精品久久久久久久美男| 日本午夜在线亚洲.国产| 精品久久中文字幕| 欧美日韩国产二区| 国产精品久久久久久一区二区| 一区二区三区四区在线观看视频| 国产精品69精品一区二区三区| 亚洲区中文字幕| 欧美日韩在线观看视频小说| 亚洲国产一区二区三区四区| 亚洲最大的免费| 国产精品爽爽爽爽爽爽在线观看| 亚洲精品女av网站| 国产亚洲精品美女| 亚洲高清久久网| 国产日韩在线亚洲字幕中文| 欧美一级大片在线观看| 久久精品视频在线播放| 一本一本久久a久久精品牛牛影视| 一区二区中文字幕| 久久久久一本一区二区青青蜜月| 成人国产精品日本在线| 精品久久久久久久久久久| 国产亚洲aⅴaaaaaa毛片| 91豆花精品一区| 亚洲男人天堂2023| 久久久女人电视剧免费播放下载| 国产成人在线视频| 成人自拍性视频| 欧美亚洲国产成人精品| 久久精品国产成人精品| 欧美大人香蕉在线| 亚洲午夜未满十八勿入免费观看全集| 91探花福利精品国产自产在线| 自拍偷拍亚洲在线| 美女撒尿一区二区三区| 久久免费成人精品视频| 日韩精品丝袜在线| 亚洲精品一区二三区不卡| 久久久久九九九九| 日韩精品视频在线观看免费| 97久久精品人搡人人玩| 亚洲美女www午夜| 国产精品久久久久久久久免费| 久久国产精品99国产精| 97香蕉超级碰碰久久免费的优势| 亚洲一区二区三区毛片| 国产精品99久久久久久人| 日本道色综合久久影院| 国产91色在线播放| 亚洲成人精品视频在线观看| 亚洲综合色av| 91国自产精品中文字幕亚洲| 97超级碰碰人国产在线观看| 亚洲国产精品推荐| 中文字幕亚洲色图| 色七七影院综合| 国产第一区电影| 国产午夜精品视频免费不卡69堂| 精品无人区太爽高潮在线播放| 一区二区三区回区在观看免费视频| 午夜精品久久17c| 亚洲国产欧美久久| 久久久国产影院| 2019中文字幕免费视频| 欧美—级a级欧美特级ar全黄| 久久人人爽亚洲精品天堂| 久久天天躁夜夜躁狠狠躁2022| 欧美疯狂做受xxxx高潮| 国产亚洲欧美日韩精品| 日韩成人网免费视频| 欧美黑人巨大精品一区二区|