我有我在waf腳本中用bld.program()的includes=...
參數指定的C++頭文件依賴關係。waf沒有正確地檢測到C++ #include依賴關係
我知道waf構建配置看到包含,因爲我的程序編譯正確。
但是,當我更改頭文件時,waf沒有檢測到更改。也就是說,當我在更改包含的頭文件的內容後運行waf build
時,什麼也得不到重新編譯。
是不是應該自動確定#include「...」的依賴關係?
如何解決此問題?
我查看了build/c4che目錄,看看能否理解存儲在那裏的配置文件。在waf生成的.py文件中提到「include」是可疑的。
我正在使用waf版本1.9.0。
我也試過這個waf 1.8.19,並得到了相同的結果。
編輯:我用下面列出的更簡單的一個替換了原來的複雜wscript,而且我仍然得到相同的行爲。
這裏是我的WScript:
top = '.'
out = 'build'
CXXFLAGS = ['-fopenmp', '-Wall', '-Werror', '-std=c++11', '-Wl,--no-as-needed']
def options(ctx):
ctx.load('compiler_cxx')
def configure(ctx):
ctx.load('compiler_cxx')
ctx.env.CXXFLAGS = CXXFLAGS
def build(ctx):
ctx.program(source="test_config_parser.cpp", target="test_config_parser", includes=["../include"], lib=['pthread', 'gomp'])
顯然不是一個C++問題。使用直接的GNU make構建系統時,'-M'選項用於生成頭文件相關性文件,這些文件可以被Makefile包含。 –
我的斷言是這是waf的問題,而不是C++。我不想使用-MM在Makefile中生成依賴項,這就是爲什麼我使用waf的原因。 – jsp
我還不確定你的例子爲什麼不起作用,我試圖看看這些文檔是否可以解決問題。 https://開頭WAF。io/book /#_ include_processing – leetNightshade