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

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

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

2019-11-14 10:15:02
字體:
來源:轉載
供稿:網友

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
欧美日韩亚洲精品一区二区三区| 亚洲国产精品99| 亚洲欧美日韩在线一区| 欧美一级免费视频| 亚洲女人天堂av| 91青草视频久久| 91久久久久久久一区二区| 成人福利视频网| 性欧美视频videos6一9| 亚洲精品久久久久久久久久久久| 国模精品系列视频| 国产精品欧美一区二区| 精品福利视频导航| 成人激情视频网| 久久久精品一区| 琪琪第一精品导航| 国产狼人综合免费视频| 亚洲性线免费观看视频成熟| 色播久久人人爽人人爽人人片视av| 久久精品视频在线观看| 亚洲影院污污.| 欧美日韩美女视频| 精品久久久久久久久久久久久久| 日本成人黄色片| 亚洲三级黄色在线观看| 国产成人精品视频在线观看| 日韩中文字幕不卡视频| 国产精品99蜜臀久久不卡二区| 欧美视频在线免费看| 国产精品免费视频久久久| 曰本色欧美视频在线| 日韩精品免费视频| 国产日韩欧美在线看| 亚洲精品乱码久久久久久按摩观| www.久久久久| 激情成人中文字幕| 亚洲一区二区三区视频播放| 国产成人精品av| 日韩欧美国产黄色| 国产日韩在线观看av| 富二代精品短视频| 欧美国产第二页| 久久亚洲精品一区| 亚洲精品v天堂中文字幕| 亚洲精品乱码久久久久久按摩观| 国产偷国产偷亚洲清高网站| 日韩少妇与小伙激情| 91精品国产高清久久久久久91| 日韩在线观看你懂的| 欧美成人免费播放| 日韩中文字幕免费看| 成人免费福利在线| 欧美激情久久久| 一区二区三区国产在线观看| 国内精品久久久久影院优| 欧美视频在线观看免费| 91探花福利精品国产自产在线| 日本免费在线精品| 一区二区三区高清国产| 亚洲www永久成人夜色| 精品五月天久久| 成人性生交大片免费观看嘿嘿视频| 日韩在线观看免费全集电视剧网站| 欧美最猛性xxxxx亚洲精品| 欧美大片免费看| 欧洲亚洲女同hd| 综合久久五月天| 日韩麻豆第一页| 国产精品成熟老女人| 欧美精品999| 日日狠狠久久偷偷四色综合免费| 97精品国产97久久久久久| 亚洲人成绝费网站色www| 夜夜嗨av色一区二区不卡| 国产精品午夜视频| 久久精品国产亚洲一区二区| 国产欧美亚洲精品| 国产视频福利一区| 欧美午夜宅男影院在线观看| 中文字幕在线观看日韩| 美女性感视频久久久| 成人黄色av免费在线观看| 亚洲色图欧美制服丝袜另类第一页| 日本亚洲精品在线观看| 国产欧美一区二区三区在线看| 欧美成人黑人xx视频免费观看| 欧美成人激情在线| 亚洲欧美激情四射在线日| 日韩中文第一页| 国产精品男人的天堂| 亚洲精品欧美日韩专区| 亚洲aa在线观看| 国产精品h片在线播放| 日韩视频免费大全中文字幕| 在线日韩精品视频| 国产成人一区二区三区小说| 久久不射电影网| 在线观看日韩专区| 91热福利电影| 久久99精品久久久久久琪琪| 一本一本久久a久久精品牛牛影视| 亚洲第一级黄色片| 国产成人亚洲综合| 色婷婷综合成人av| 尤物tv国产一区| 国产亚洲欧美日韩一区二区| 亚洲国产成人91精品| 欧美小视频在线观看| 欧美不卡视频一区发布| 好吊成人免视频| 久久精品国产99国产精品澳门| 成人免费观看49www在线观看| 成人黄色网免费| 国产精品96久久久久久| 国产91精品不卡视频| 成人网在线免费看| 久久99久久99精品中文字幕| 国产精品视频网| 亚洲欧美日韩综合| 亚洲精品短视频| 日韩在线观看免费高清完整版| 亚洲国产精品资源| 亚洲美女自拍视频| 亚洲毛片一区二区| 国产成人精品午夜| 91在线视频精品| 成人av在线天堂| 色综合91久久精品中文字幕| 久久亚洲电影天堂| 亚洲欧洲国产精品| 欧洲精品在线视频| 久久精品99久久久香蕉| 一区二区三区美女xx视频| 一区二区三区天堂av| 中文欧美在线视频| 91久久精品国产91久久| 色阁综合伊人av| 成人精品网站在线观看| 91精品国产高清久久久久久| 美女国内精品自产拍在线播放| 欧美丝袜一区二区三区| 成人黄色av网站| 一级做a爰片久久毛片美女图片| 欧美日韩亚洲视频一区| 精品亚洲夜色av98在线观看| 国产999在线| 亚洲free性xxxx护士白浆| xvideos国产精品| 国产精品一区av| 一区二区三区视频免费在线观看| 2019国产精品自在线拍国产不卡| 日韩精品极品毛片系列视频| 日本精品久久久久久久| 久久综合九色九九| 91中文在线观看| 国模精品系列视频| 精品久久久国产精品999| 欧美一级视频在线观看| 日韩激情第一页| 久久久久久久一区二区| 亚洲欧美日韩一区在线| 播播国产欧美激情| 日韩美女写真福利在线观看| 丰满岳妇乱一区二区三区|