有没有办法在传递参数时指定文件而不是字符串?
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中返回另一条修正相对路径的路径。
答案 0 :(得分:1)
不要在顶级SConstruct中指定LIBPATH / CPPPATH等变量,这些变量会针对每个模块(库/可执行文件)进行更改。设置应该由每个模块使用的编译器/链接器标志,然后像以前一样导出()环境。
然后,在SConscript中,使用:
Import('env')
localEnv = env.Clone()
localEnv.Append(LIBPATH=['include'])
localEnv.Program( ... )
,其中“include”是当前SConscript目录中lib文件夹的相对路径。 这将使单个模块的维护变得更加容易,同时也为变体构建等提供了更好的起点。