0

假设我有两个SConscripts:

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

4

1 回答 1

0

我假设这个

应用程序->解析-> pkg_alias

表示app依赖于parse,parse依赖于pkg_alias。

如果您pkg-config通过 Command() 构建器调用,则 SCons 将为它创建一个可用于依赖项的目标。问题是我不认为你可以让 ParseConfig() 依赖于pkg-config目标,因为 ParseConfig() 在构建任何目标之前执行。实际上,在构建任何目标之前,都会评估 SConstruct 和所有 SConscript。

相反,您可以pkg-config直接通过 Python 调用而不使用 Command() 构建器,然后在构建目标之前调用 ParseConfig()。然后将根据环境中的内容构建应用程序。

以防万一,您可以在同一个环境中获取所有内容,如下所示:

使用函数调用 SConscript SConscript()。执行此操作时,您可以在 SConstruct 中创建一个 Environment 并将其导出到 SConscripts,如下所示:

SConstruct

env = Environment()
SConscript('suba/SConscript', exports='env', duplicate=0)
SConscript('subb/SConscript', exports='env', duplicate=0)

潜艇/征兵

Import('env')

然后,您在任何脚本中所做的任何事情都将在同一环境中完成。

于 2013-06-05T16:54:31.607 回答