2014-10-16 2 views
0

Я использую qmake до сих пор, и он передал правильные флаги для GCC для генерации отладочной информации при компиляции без меня, когда мне когда-либо приходилось беспокоиться о передаче правильных флагов. Теперь я должен использовать SCons из-за потребностей проекта, и я еще не привык к этому. Как передать флаги отладки в GCC с помощью SCons, чтобы GCC мог генерировать отладочную информацию для GDB? (Кстати, я уже пробовал '-g', но это не сработало.)GCC Debug Flags SCons

Спасибо заранее всем, кто отвечает!

+0

Какая версия SCons вы используете? Прошли ли вы по этой документации -> http://www.scons.org/doc/1.0.1/HTML/scons-user/x1392.html? – iqstatic

+0

Как вы уже пробовали передать '-g' в GCC? – Brady

ответ

3

Чтобы передать флаги в компилятор, вы можете установить одно из следующих значений: SCons Construction Variables.

CPPFLAGS

задаваемый пользователем C опции препроцессора

CFLAGS

Общие параметры, передаваемые компилятору (C только, а не C++).

CCFLAGS

Общие параметры, которые передаются компиляторов С и С ++

CXXFLAGS

Основные параметры, которые передаются в C++ компилятор

Например, если вы используете только C++, вы можете сделать следующее:

env = Environment() 
env.Append(CXXFLAGS='-g') 
env.Program(target='yourTarget', source='yourSource.cc') 
2

Вы можете добавить опции в командную строку SCons, используя AddOption. Например, ваш SConstruct может выглядеть следующим образом:

AddOption('--dbg', action='append_const', dest='cflags', const='-g') 
AddOption('--opt', action='append_const', dest='cflags', const='-O2') 

env = Environment() 
env.MergeFlags(GetOption('cflags')) 

SConscript('SConscript', exports={'env':env}) 

Ваш SConscript не изменится:

Import('env') 
env.Program('foo.c') 

Вы контролируете компиляцию с параметрами командной строки для SCons:

$ scons -Q 
gcc -o foo.o -c foo.c 
gcc -o foo foo.o 
$ scons -Q --dbg 
gcc -o foo.o -c -g foo.c 
gcc -o foo foo.o 
$ scons -Q --opt 
gcc -o foo.o -c -O2 foo.c 
gcc -o foo foo.o 

Артикул: