【问题标题】:scons - How to add search directories to an existing scannerscons - 如何将搜索目录添加到现有扫描仪
【发布时间】:2014-09-15 14:46:14
【问题描述】:

我的主要目标是在 scons 中添加对 -isystem 包含路径的支持,如下所示: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 扫描程序中?

我希望我的问题足够清楚,否则请不要犹豫告诉我。

【问题讨论】:

    标签: c++ gcc scons


    【解决方案1】:

    这是替换默认 C 扫描器的 FindPath 方法的基本方法,但请注意这是一个丑陋的 hack:

    # 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 上问这些问题呢? ;)

    【讨论】:

    • 不客气。顺便说一句,您是否能够并且愿意将您的工具/构建器贡献回 SCons 项目?似乎对支持“-isystem”的兴趣越来越大,也许我们可以一起将其纳入核心。非常感谢您考虑到这一点...
    • 感谢您的提议,我很乐意为 SCons 项目带来我的小小贡献。我从不参与社区项目,所以我不知道好的切入点,但我已经准备好学习了。我将非常感谢您能够为我在 SCons 中添加此功能提供的所有帮助。
    • 当然,一个好的切入点是在 scons-users@scons.org 写(并订阅)我们的用户邮件列表(可以在我们的网站上找到不同 ML 的链接scons.org )。只需说“嗨”并明确表示您有贡献,然后我们会从那里开始。我期待着您的回音...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多