waf : 将编译器标志传递给 qt 的 moc
Posted
技术标签:
【中文标题】waf : 将编译器标志传递给 qt 的 moc【英文标题】:waf : passing compiler flags to qt's moc 【发布时间】:2012-07-06 10:42:37 【问题描述】:我尝试使用 waf
运行一个项目,该项目使用 boost
library 。为了克服problem,我需要将-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'])
但它失败了。如何使用waf
将参数传递给MOC
?
【问题讨论】:
您确定这些需要传递给 moc 吗?它们看起来像通用定义,应该通过 "bld(..., defined=['QT_NO_KEYWORDS', 'BOOST_TT_HAS_OPERATOR_HPP_INCLUDED'], ...)" 定义,如 docs.waf.googlecode.com/git/book_16/single.html 第 9.1.2 节 【参考方案1】:这里可能的问题是waf
调用的new task for moc
可能与您在上面定义的任务生成器携带的cxxflags
不同。
一种可能的解决方法是将定义添加到waf
环境中,如下所示:
conf.env.append_unique('DEFINES',
['QT_NO_KEYWORDS','BOOST_TT_HAS_OPERATOR_HPP_INCLUDED'])
如果您只想将定义添加到moc
任务,您可以实现一个自定义功能并将其添加到您的任务生成器中,该生成器挖掘出moc
任务并添加定义。
【讨论】:
以上是关于waf : 将编译器标志传递给 qt 的 moc的主要内容,如果未能解决你的问题,请参考以下文章