Я испытываю проблему при использовании Scons 2.3.0 в OpenSUSE:
Когда я добавил опцию «-std = c ++ 11», я увидел ошибку
cc1plus: error: unrecognized command line option "-std=c++11"
Я понял, что это потому, что моя версия g ++ была слишком старой (4.1). Поэтому я обновил его до 4.7.1.
Следующее тоже сделано
когда я пытаюсь
which g++
Я видел, что это показывает путь к моей новой g ++ 4.7.1
когда я пытаюсь g++ -v
Я тоже видел версию 4.7.1
БЕЗ использования scons, если я попытаюсь построить простой helloWorld с g++ -std=c++11 helloWorld.cpp
все работает нормально.
Теперь с помощью scons я увидел cc1plus: error: unrecognized command line option "-std=c++11"
s.system("g++ -v")
в моем файле SConstruct он все еще печатает правильную версию (4.7.1)Поэтому я не уверен, какую часть я сделал неправильно.
Пожалуйста, дайте мне совет
Заранее спасибо за помощь!
SCons выбирает более старую версию компилятора по умолчанию.
дела os.system("g++ -v")
будет использовать ваш PATH, но SCons внутренне не использует PATH для поиска компилятора, он выглядит в стандартных местах.
Если вы не можете удалить старую версию компилятора, вам, возможно, придется явно указать новый компилятор. Это можно сделать, установив некоторые переменные конструкции в среде следующим образом:
env = Environment()
env.Replace(CXX='path/g++')
env.Replace(CC='path/gcc')
Вы можете найти все строительные переменные Вот.
Других решений пока нет …