到目前为止,我一直在使用qmake,它在GCC中传递了正确的标志,以便在编译时生成调试信息,而不必担心传递正确的标志。现在我必须使用SCons,因为项目的需要,我还没有习惯它。 如何使用SCons将调试标志传递给GCC,以便GCC可以为GDB生成调试信息?(顺便说一下,我已经尝试了'-g'
,但它没有工作。 )
提前感谢任何回复的人!
答案 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
参考: