GCC调试标志SCons

时间:2014-10-16 05:34:54

标签: c++ c build scons flags

到目前为止,我一直在使用qmake,它在GCC中传递了正确的标志,以便在编译时生成调试信息,而不必担心传递正确的标志。现在我必须使用SCons,因为项目的需要,我还没有习惯它。 如何使用SCons将调试标志传递给GCC,以便GCC可以为GDB生成调试信息?(顺便说一下,我已经尝试了'-g',但它没有工作。 )

提前感谢任何回复的人!

2 个答案:

答案 0 :(得分:3)

要将标志传递给编译器,您可以设置以下SCons Construction Variables之一。

<强> 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')

答案 1 :(得分:3)

您可以使用AddOption向SCons命令行添加选项。例如,您的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

参考: