Я использовал qmake до сих пор, и он передал правильные флаги для GCC для генерации отладочной информации при компиляции без меня, когда мне когда-либо приходилось беспокоиться о передаче правильных флагов. Теперь я должен использовать SCons из-за потребностей проекта, и я еще не привык к этому. Как передать флаги отладки в GCC с помощью SCons, чтобы GCC мог генерировать отладочную информацию для GDB? (Кстати, я уже пробовал '-g'
, но это не сработало).
Спасибо заранее любому, кто отвечает!
Вы можете добавить опции в командную строку 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
Справка:
Чтобы передать флаги в компилятор, вы можете установить одну из следующих переменных построения SCons.
CPPFLAGS
Пользовательские параметры препроцессора C
CFLAGS
Общие параметры, которые передаются компилятору C (только C, а не C++).
CCFLAGS
Общие параметры, которые передаются компиляторам C и C++
CXXFLAGS
Общие параметры, которые передаются компилятору C++
Например, если вы используете только C++, вы можете сделать следующее:
env = Environment()
env.Append(CXXFLAGS='-g')
env.Program(target='yourTarget', source='yourSource.cc')