scons установка CXXFLAGS в одном модуле влияет на другой - PullRequest
1 голос
/ 16 февраля 2010

в dirA / SC. У меня есть:

Import('env')
probeenv = env.Clone()
probeenv['CXXFLAGS'] +=  ['-fno-rtti','-Wnon-virtual-dtor']
... stuff that uses probeenv

в dirB / SConscript у меня

Import('env')
sipenv = env.Clone()
... stuff that uses sipenv

Теперь, файлы c ++ в dirB, которые компилируются, получают CXXFLAGS от dirA - как получилось? Это не происходит с CCFLAGS. Также не произойдет, если я использую probeenv['CXXFLAGS'] = ['-fno-rtti','-Wnon-virtual-dtor'] в дире

Ответы [ 3 ]

1 голос
/ 15 апреля 2010

Это похоже на ошибку scons, если CXXFLAGS не установлен в "основной" SConstruct. Обходной путь - просто установить там пустой список.

SConscript:

env['CXXFLAGS'] = []
1 голос
/ 17 февраля 2010

Существует специальный метод для добавления данных к различным флагам компилятора:

probenv.Append(CXXFLAGS = ['-fno-rtti','-Wnon-virtual-dtor'])

Существует также AppendUnique и AppendENVPath. См. Человека для описания.

0 голосов
/ 17 января 2013

Лучший способ добиться этого:

env.Prepend(CXXFLAGS = ['-fno-rtti', '-Wnon-virtual-dtor'])

Таким образом, вы не получите ошибку и избежите обходного пути, потому что, если значение CXXFLAGS не задано, оно создается автоматически.

...