waf: передача флагов компилятора в moc qt

Я пытаюсь запустить проект, используя waf, который использует библиотеку boost. Чтобы преодолеть проблему, мне нужно передать -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED аргумент в MOC. Я пытался сделать это в wscript как

   bld(features ='cxx',
       source   ='GSTEngine.cpp',
       target   = 'GSTEngine.o',
       includes = qtinc+gstinc+taginc,use=['BOOST'],
       uselib   = qtlibs,
       cxxflags = ['-DQT_NO_KEYWORDS','-DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED'])

но это не удалось. Как передать аргумент MOC с помощью waf?


person Vihaan Verma    schedule 06.07.2012    source источник
comment
Вы уверены, что их нужно передать moc? Они выглядят как общие определения и должны быть определены через bld(..., defines=['QT_NO_KEYWORDS', 'BOOST_TT_HAS_OPERATOR_HPP_INCLUDED'], ...), как это видно на docs.waf.googlecode.com/git/book_16/single.html раздел 9.1.2   -  person drahnr    schedule 10.07.2012


Ответы (1)


Возможная проблема заключается в том, что waf вызывает новую задачу. для moc, который может не иметь того же cxxflags, что и генератор задач, который вы определили выше.

Возможное исправление состоит в том, чтобы добавить определения в среду waf следующим образом:

conf.env.append_unique('DEFINES',
    ['QT_NO_KEYWORDS','BOOST_TT_HAS_OPERATOR_HPP_INCLUDED'])

Если вы просто хотите добавить определения к задаче moc, вы можете реализовать пользовательскую функцию и добавить ее в свой генератор задач, который выкапывает задачу moc и добавляет определения.

person Matt Clarkson    schedule 07.02.2013