9
A
回答
6
你的意思是這樣的:
$ cat Makefile
BUILD := debug
cxxflags.debug := -g -march=native
cxxflags.release := -g -O3 -march=native -DNDEBUG
CXXFLAGS := ${cxxflags.${BUILD}}
all :
@echo BUILD=${BUILD}
@echo CXXFLAGS=${CXXFLAGS}
.PHONY : all
輸出:
$ make
BUILD=debug
CXXFLAGS=-g -march=native
$ make BUILD=release
BUILD=release
CXXFLAGS=-g -O3 -march=native -DNDEBUG
15
您可以使用target-specific variable values,他們傳播到目標的先決條件:
all : foo bar
foo : CXXFLAGS += -DFOO
bar : CXXFLAGS += -DBAR
foo bar :
@echo [email protected] CXXFLAGS=${CXXFLAGS}
.PHONY : all
+0
請注意,這隻適用於GNU的make。 – martinkunev 2017-11-24 20:00:23
+0
@martinkunev那麼,GNU make是唯一的便攜式品牌AFAIK。 'nmake'是Windows特有的並且是垃圾,Sun使用Sun和Solaris製作了很多圈......我不熟悉其他品牌。 – 2017-11-24 21:30:36
相關問題
- 1. 如何定義一個變量,然後編譯目標[Makefile]
- 2. 變量未定義編譯器錯誤
- 3. Makefile - 根據目標更改變量值
- 4. Make:根據目標設置變量
- 5. 根據目錄制定目標的變量
- 6. 根據字符串定義變量
- 7. 根據windowidth定義和觀察變量
- 8. 根據浮動變量指定色標
- 9. .htaccess - 如何根據environement變量設置自定義標題?
- 10. RInside編譯:制定目標
- 11. C++重新定義目標變量,
- 12. 如何根據另一個變量的值定義變量
- 13. 如何根據定義變量的值定義列表名稱
- 14. 如何根據目標名稱進行條件編譯?
- 15. OpenSSL AES_set_encrypt_key根據編譯目標的不同而不同
- 16. 改變目標編譯名QT應用
- 17. 定義變量名稱,除非在編譯器中重新編譯
- 18. XCode編譯變量
- 19. Scala.js編譯目標
- 20. 引用install4j中編譯器變量定義中的其他變量
- 21. 通天編譯常量未定義
- 22. 用於Objective-C代碼的自定義編譯時間變量?
- 23. 爲什麼編譯器抱怨這個變量已經定義
- 24. C++成員專用數組變量 - 在編譯時未定義
- 25. 編譯錯誤而定義的變量範圍
- 26. 將環境變量定義爲bcc32編譯器中的值
- 27. AS3Eval庫抱怨「變量編譯沒有定義」
- 28. 在Swift中使用條件編譯來定義全局變量
- 29. 爲什麼編譯器接受含糊變量定義?
- 30. Closure編譯器:變量定義是不宣
ŧ他變量被傳遞爲'-D'標誌?你能否提供一個你的Makefile中有多個目標的摘錄? – 2011-02-26 17:49:23