Scons似乎忽略了CPPPATH值

时间:2017-03-02 00:19:12

标签: scons

我通过ParseFlags设置CPPPATH变量:

env = Environment()
env["CXX"] = "clang++" 
d = env.ParseFlags("-I. -I../utl")
print d
env.StaticLibrary(target="myLib",source = source_files)

d的打印显示CPPPATH设置为正确的目录:

  

{'CPPFLAGS':[],'FRAMEWORKPATH':[],'LIBPATH':[],'CXXFLAGS':[],   'LIBS':[],'ASFLAGS':[],'LINKFLAGS':[],'RPATH':[],'CPPDEFINES':   [],'FRAMEWORKS':[],'CCFLAGS':[],'CFLAGS':[],'CPPPATH':['。',   '../ UTL']}

但是,编译输出没有-I选项:

clang++ -o ABC_Exception.o -c ABC_Exception.cpp

未能在../ utl

中找到包含文件
  

./ ABC_Exception.hpp:4:10:致命错误:找不到'Exception.hpp'文件

1 个答案:

答案 0 :(得分:2)

ParseFlags 后面应该跟 MergeFlags 一起将变量添加到环境中,如SCons documentation中所述。

  

ParseFlags返回包含分发选项的字典   进入各自的建筑变量。通常,这个   字典将被传递给MergeFlags以将选项合并到一个   建筑环境,但如果需要,可以编辑字典   提供附加功能。 (注意,如果标志不是   将要编辑,直接调用MergeFlags选项将   避免额外的步骤。)

在您的示例中,您只需使用传递给ParseFlags的字符串调用MergeFlags即可。