[英]How to append to CXXFLAGS in Makefile without editing Makefile?
我正在為 Qt 應用程序編寫構建腳本。 該腳本首先在 .pro 文件上調用qmake
,然后運行make CXXFLAGS=-DSWVERSION=xxxx
。
這個問題是它覆蓋了 Makefile 中已經定義的 CXXFLAGS。目前,我知道解決這個問題的唯一方法是編輯 Makefile 並更改它:
CXXFLAGS = <flags>
對此:
CXXFLAGS += <flags>
我希望有一個更簡單的解決方案。 有什么辦法可以從命令行簡單地將 append 轉換為 CXXFLAGS 而無需重寫 Makefile?
或者,我真正的問題是在構建時定義SWVERSION
(因為它取決於構建時間戳)。 您知道在運行時定義它而不是將其傳遞給 CXXFLAGS 的更好方法嗎?
您建議的更改無論如何都行不通:命令行上設置的值完全覆蓋 makefile 中設置的值,即使該值附加了+=
也是如此。 你可以這樣做並且它會起作用:
override CXXFLAGS += <flags>
但是,通常的做法是 makefile 提供專門保留的變量,供用戶在命令行上覆蓋。 例如在 automake 生成的 makefile 中,諸如CXXFLAGS
、 CFLAGS
等公共變量保留供用戶通過命令行或環境設置,而內部 makefile 標志被放入不同的變量中,如AM_CFLAGS
。 然后編譯對象的方法使用兩個變量,比如$(CC) $(AM_CFLAGS) $(CFLAGS)...
我對 qt 一無所知,所以我不能說他們是否有一組類似的保留 makefile 變量,但您可以查看 qt 文檔,或您生成的 makefile 食譜,看看。
對於以后閱讀本文的任何人,我找到的解決方案是調用qmake <project file> DEFINES+="SWVERSION=xxxx"
。 希望有人覺得這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.