[英]How to use Makefile variables as files to include in g++ command?
這是我的問題:我有一個makefile文件,其中包含用於編譯項目中所有內容的信息,以使我的生活更輕松,但是最近這讓我有些頭疼。
它可以編譯多個文件,例如:
objects/io.o: sources/io.cpp
@g++ -c $< -o $@ -std=c++11
objects/map.o: sources/map.cpp
@g++ -c $< -o $@ -std=c++11
在makefile的頂部,我有這樣聲明的變量:
IO="objects/io.o"
MAP="objects/map.o"
[... other object files ...]
ALL="$(IO) $(MAP) [...]"
當我要編譯主文件時,請使用以下命令:
main.exe: tests/main.cpp
@g++ $< $(ALL) -o $@ -std=c++11
當我手動編譯此問題時(在命令的一行中輸入所有內容,而不是制作make main.exe
),它make main.exe
編譯。
但是,當我對項目使用make命令時,會彈出以下錯誤:
clang: error: no such file or directory: 'objects/io.o objects/map.o [...]'
make: *** [main.exe] Error 1
我可以不這樣使用變量嗎? 我非常困惑。 我知道這些文件都是經過編譯的,似乎make
實用程序無法理解文件路徑。
我認為問題是您引用了變量。 嘗試取消引用它們,它們將不會擴展單個參數:
ALL = $(obj1) $(obj2) ...
另外,對於那些使用相同編譯過程的對象,我通常定義一條規則:
obj/%.o: %.cc
$(GCC) -o $@ -c $< $(FLAGS)
顯然,這將需要定義額外的變量GCC
和FLAGS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.