我的主要目标是在scons中添加对-isystem include路径的支持,如下所示:https://stackoverflow.com/a/2547261/4042960
创建新变量的解决方案很好用:我这样做:
#### Add support for system headers
env['SYSTEMINCPREFIX'] = '-isystem '
env['SYSTEMINCSUFFIX'] = ''
env['_CPPSYSTEMINCFLAGS'] = '$( ${_concat(SYSTEMINCPREFIX, CPPSYSTEMPATH, SYSTEMINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
env['_CCCOMCOM'] += ' $_CPPSYSTEMINCFLAGS'
我通过添加例如:
来使用它env.Append(CPPSYSTEMPATH = ['/my/include/path'])
我的问题是,现在,路径/ my / include / path不会被C(或C ++)依赖扫描程序扫描。经过多次搜索,我未能找到如何添加变量" CPPSYSTEMPATH"被视为" CPPPATH"通过依赖扫描程序。
有谁知道如何添加" CPPSYSTEMPATH"中包含的搜索路径?现有的C扫描仪?
我希望我的问题足够清楚,否则请不要犹豫告诉我。
答案 0 :(得分:0)
这是替换默认C扫描程序的FindPath方法的基本方法,但要注意它是一个丑陋的黑客:
# Create environment
env = Environment()
# Define your new env variable as combination of both paths
env['MYCPPPATHS'] = ['$CPPPATH','$CPPSYSTEMPATH']
# Replace the path_function of the standard C scanner by:
import SCons.Tool
import SCons.Scanner
setattr(SCons.Tool.CScanner,'path_function',SCons.Scanner.FindPathDirs('MYCPPPATHS'))
# Do your build stuff...
env['CPPSYSTEMPATH'] = 'myinclude'
env.Program('main','main.cpp')
顺便问一下,为什么不在我们的用户邮件列表scons-users@scons.org上提出这类问题呢? ;)