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

Недавно я строю новый модуль NS3. В своем коде я использую некоторые новые функции C++11 (c++0x), я хочу добавить флаги gcc (CXXFLAGS) "-std=c++0x" в систему конфигурации waf.

Я пробовал так: CXXFLAGS="-std=c++0x" waf configure, а потом бил. Однако оказывается, что некоторые из существующих модулей, такие как ipv4-адрес, несовместимы с c++11. Таким образом, я хочу указать этот флаг специально для моего нового модуля, чтобы другие модули не компилировались на С++ 11.

Я попытался добавить это в wscript в мой новый модуль:

def configure(conf):
    conf.env.append_value('CXXFLAGS', '-std=c++0x')

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

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


person user1875337    schedule 04.12.2012    source источник
comment
Разве добавление -std=c++0x в configure не устанавливает его глобально?   -  person A_P    schedule 02.01.2020


Ответы (2)


Хотя ответ @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']
person user35147863    schedule 22.12.2013

Согласно waf book 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. Возможно, вам потребуется сообщить waf о сгенерированных «myobjects», иначе они могут не использоваться для сборки «myshlib», так как waf индексирует все файлы перед сборкой.

person drahnr    schedule 18.12.2012
comment
но система NS3 waf настолько сложна, что они организуют источник и цели не так... - person user1875337; 30.12.2012