代码之家  ›  专栏  ›  技术社区  ›  merovingien

scons-如何将搜索目录添加到现有扫描仪

  •  0
  • merovingien  · 技术社区  · 11 年前

    我的主要目标是在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扫描仪中吗?

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

    1 回复  |  直到 9 年前
        1
  •  0
  •   dirkbaechle    11 年前

    以下是替换默认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? ;)