【问题标题】: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
    

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多