Я строю новый модуль NS3 недавно. В моем коде я использую что-то новое C++11 (c++0x)
Я хочу добавить флаги GCC (CXXFLAGS) "-std=c++0x"
к waf
Конфигурация системы.
Я пытался это: CXXFLAGS="-std=c++0x" waf configure
, а затем построить его. Однако оказывается, что некоторые из существующих модулей, например ipv4-address, не совместимы с c++11
, Таким образом, я хочу указать этот флаг специально для моего нового модуля, чтобы другие модули не были соблюдены на c ++ 11.
Я пытался добавить это в WSCcript в мой новый модуль:
def configure(conf):
conf.env.append_value('CXXFLAGS', '-std=c++0x')
Это терпит неудачу как первое испытание.
Как я могу это сделать?
Хотя ответ @ drahnr верен для vanilla 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']
Согласно книга 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 — этот код состоит из 2 примеров, представленных в не проверено на всех.
Примечание № 2 — вам может потребоваться, чтобы waf знал о сгенерированных «myobjects», или они не могут использоваться для сборки «myshlib», так как waf индексирует все файлы до строительство.