У меня есть зависимостей заголовков файлов C++, которые я указываю в моем скрипте waf с параметром includes=...
на bld.program().waf не корректно обнаруживает зависимости C++ #include
Я знаю, что конфигурация сборки waf видит, что включает, потому что моя программа правильно компилируется.
Однако, когда я изменяю заголовочный файл, waf не обнаруживает изменения. То есть, когда я запускаю waf build
после изменения содержимого включенного заголовка, ничего не перекомпилируется.
Разве waf не должен определять #include "..." зависимости автоматически?
Как устранить эту проблему?
Я просмотрел каталог build/c4che, чтобы узнать, могу ли я иметь в виду конфигурационные файлы, хранящиеся там. Упоминание «включить» в WAP-файлы .py файлов подозрительно отсутствует.
Я использую waf версию 1.9.0.
Я также пробовал это с помощью waf 1.8.19 и получил тот же результат.
EDIT: Я заменил свой оригинальный сложный 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++. Я не хочу создавать зависимости в Makefile с использованием -MM, поэтому я использую waf. – jsp
Я еще не уверен, почему ваш пример не работает, я пытаюсь понять, могут ли документы пролить свет. https: // WAF.io/book/# _ include_processing – leetNightshade