【问题标题】:GCC Debug Flags SConsGCC 调试标志
【发布时间】:2014-10-16 05:34:53
【问题描述】:
到目前为止,我一直在使用 qmake,它在编译时为 GCC 传递了正确的标志以生成调试信息,而我不必担心传递正确的标志。现在由于项目的需要,我不得不使用 SCons,但我还没有习惯。 如何使用 SCons 将调试标志传递给 GCC,以便 GCC 可以为 GDB 生成调试信息?(顺便说一句,我已经尝试过 '-g',但没有成功。)
提前感谢任何回复的人!
【问题讨论】:
标签:
c++
c
build
scons
flags
【解决方案1】:
要将标志传递给编译器,您可以设置以下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')
【解决方案2】:
您可以使用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
参考: