假设我有两个SConscript
s:
SConstruct
SConscript a
SConscript b
SConscript a
生成一个pkg-config
文件(对于没有的文件)。我有一个别名(替换,安装等),pkg_alias
。 SConscript b
调用env.ParseConfig(...)
并构建app
,因此生成文件非常重要(否则pkg-config
会抱怨)。
所以我需要的是这样的依赖:app
- > parse
- > pkg_alias
。
有可能表达这个吗?
当subdir_env.Depends(subdir_env, 'pkg_alias')
是尝试subdir_env
的人时,与ParseConfig
一样。
答案 0 :(得分:0)
我假设这个
app - >解析 - > pkg_alias
表示app依赖于parse,而parse依赖于pkg_alias。
如果您通过Command()构建器调用pkg-config
,则SCons将为其创建可用于依赖项的目标。问题是我不认为你可以使ParseConfig()依赖于pkg-config
目标,因为ParseConfig()在构建任何目标之前执行。实际上,在构建任何目标之前,会对SConstruct和所有SConscript进行评估。
相反,您可以直接通过Python调用pkg-config
而无需使用Command()构建器,然后在构建目标之前调用ParseConfig()。然后应用程序将根据环境中的内容构建。
以防万一,您可以按照以下方式获取所有内容:
使用SConscript()
函数调用SConscript。执行此操作时,可以在SConstruct中创建环境并将其导出到SConscripts,如下所示:
SConstruct
env = Environment()
SConscript('suba/SConscript', exports='env', duplicate=0)
SConscript('subb/SConscript', exports='env', duplicate=0)
SUBA / Sconscript
Import('env')
然后,您在任何脚本中执行的任何操作都将在同一环境中完成。