Scons包含目录静态?

时间:2014-08-15 07:01:49

标签: scons

有没有办法在传递参数时指定文件而不是字符串?

env = Environment(LIBPATH = "include") # problem

Export("env")

SConscript("somepath")

...

# SConscript #

Import("env")

env.Program( ... )

问题是它是否会使用SConscript的目录,该目录没有" include"夹。我注意到有些对象返回(env.Program())没有这个问题。在SConscript out = env.Program(...)中执行print out时,它会返回一条路径,然后在SConstruct中返回另一条修正相对路径的路径。

1 个答案:

答案 0 :(得分:1)

不要在顶级SConstruct中指定LIBPATH / CPPPATH等变量,这些变量会针对每个模块(库/可执行文件)进行更改。设置应该由每个模块使用的编译器/链接器标志,然后像以前一样导出()环境。

然后,在SConscript中,使用:

Import('env')

localEnv = env.Clone()
localEnv.Append(LIBPATH=['include'])

localEnv.Program( ... )

,其中“include”是当前SConscript目录中lib文件夹的相对路径。 这将使单个模块的维护变得更加容易,同时也为变体构建等提供了更好的起点。