Как указать флаги gcc (CXXFLAGS) специально для конкретного модуля?

Я строю новый модуль 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')

Это терпит неудачу как первое испытание.

Как я могу это сделать?

8

Решение

Хотя ответ @ 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

Другие решения

Согласно книга 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 индексирует все файлы до строительство.

1

По вопросам рекламы [email protected]