如何检查 g++ 在 SCons 中是否支持 c++14/17?

How to check if g++ supports c++14/17 in SCons?

我正在使用 scons 作为我的构建系统。

我的一些代码是针对 cpp14 和 cpp17 的。它们位于 "newcpp" 之类的文件夹中。我希望我的 SConstruct/Sconscript 可以检查我的 g++ 是否支持这些标志,伪代码如下:

import os,sys
env = Environment(ENV = {'PATH' : os.environ['PATH']})
if [CXX_SUPPORTS('-std=c++14')]
    env.SConscript(dirs=['newcpp'])

我知道automake/configure支持这种检查。如何在scons中实现?

您很可能想使用配置上下文。 请参阅用户指南的这一部分 https://scons.org/doc/production/HTML/scons-user/ch23.html

联机帮助页的这一部分: https://scons.org/doc/production/HTML/scons-man.html#configure_contexts

很可能您会想要这样的东西:

env = Environment(CFLAGS='-std=c++14')
conf = Configure(env)
if conf.CheckCXX():
   print("Yes CXX14")
   env.SConscript(dirs=['newcpp'])
env = conf.Finish()