我有我在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