如何指定 gcc 标志 (CXXFLAGS) 特别是对于特定模块
How to specify gcc flags (CXXFLAGS) particularly for a specific module?
我最近正在构建一个新的 NS3 模块。 在我的代码中,我使用了C++11 (c++0x)
的一些新功能,我想添加一个 gcc 标志(CXXFLAGS)"-std=c++0x"
到waf
配置系统。
我尝试这样做:CXXFLAGS="-std=c++0x" waf configure
,然后构建它。 但是,事实证明,某些现有的模块(例如ipv4地址)与c++11
不兼容。 因此,我想专门为我的新模块指定此标志,以便其他模块不会在 c++11 上被遵守。
我试图将其添加到新模块中的 wscript 中:
def configure(conf):
conf.env.append_value('CXXFLAGS', '-std=c++0x')
它作为第一次试验失败。
我该怎么做?
虽然@drahnr的答案对于原版 waf 是正确的,但它不适用于 NS-3 的构建系统,这显然是 OP 想要的。要将 CXXFLAGS 添加到 NS-3 程序,可以将它们添加到构建对象中,而不是在配置阶段。
例如:
def build(bld):
obj = bld.create_ns3_program('my_app', ['core', 'other-dependencies'])
obj.source = 'MyApplication.cpp'
obj.cxxflags = ['-std=c++11']
根据 waf 书籍 1.7.8 第 10.1.1 和 10.1.2 节
bld.shlib(source='main.c',
target='myshlib',
cflags = ['-O2', '-Wall'],
cxxflags = ['-O3', '-std=c++0x'],
use = 'myobjects')
bld.objects(source='ip4.c',
cflags = ['-O2', '-Wall'],
cxxflags = ['-std=somethingelse'],
target = 'myobjects')
注意 #1 - 此代码由 wafbook 中提供的 2 个示例组成,根本没有经过测试。
注意 #2 - 您可能需要让 waf 知道生成的"myobjects",否则它们可能不会用于构建 'myshlib',因为 waf 会在构建之前索引所有文件。
相关文章:
- 如何在Qt 4.8中阻止/忽略/丢弃早于特定超时的用户输入事件
- 确保特征将 AVX 矢量化用于特定操作
- 确定夏令时是否适用于特定日期
- 非静态成员引用必须相对于特定对象
- C++ 中的 CSV 文件管理(特别是设置标头和每个标头将分别具有的值)
- C++:在进行切片时对迭代器的约定,特别是对于访问最后一个元素并最终将其删除
- 互斥锁能否保护相对于特定指针的数据?
- 依赖于特定类类型的C++模板方法
- clang的"-Ofast"选项在实践中有什么作用,特别是对于与gcc的任何差异?
- 如何在程序后台运行函数(特别是自动保存函数)?QT / C++
- 直接向工会而不是其特定成员之一发送memcpy数据是否安全
- 在Cython中损坏的非成员运算符过载(特别是操作员==)
- Qimage :: Pixel函数的10位输出特别是指的是什么
- 查找所有移动构造函数和移动赋值运算符(特别是那些没有"noexcept"的运算符)
- 在特征源中是为特定矩阵定义的 sum() 函数
- 浮点计算可以用于任何可靠的函数,特别是容器和算法吗?
- 将QT窗口强加于特定的屏幕
- 如何指定 gcc 标志 (CXXFLAGS) 特别是对于特定模块
- OpenGL是非常特定于机器的
- 是使用特定于编译器的变量对新结构{}进行列表初始化