我正在尝试从另一个外部 SCons 项目构建一个可执行文件,以便在我的 SCons 构建中使用它。
一开始我尝试跑步:
Command('other_project_dir/executable', None, 'scons -C other_project_dir')
这不起作用,因为 SCons 默认情况下不使用系统
PATH
变量。
即使它可以工作,另一个问题是有人使用 SCons 的自定义路径调用我的脚本。其他脚本仍将使用默认 SCons 构建。
总之,我需要找出当前正在运行的 SCons 的路径是什么。 有什么方法可以获取它,或者存储它的环境变量吗?
目前(在版本
4.3.0
中)SCons 没有内置方法来获取其路径。
但是,您实际上并不需要任何特殊功能。你可以只使用普通的Python:
import sys
scons_path = sys.argv[0]
Command('other_project_dir/executable', scons_path, '$SOURCE -C other_project_dir')
不要尝试使用变量
__file__
。
它被 SCons 故意删除。
顺便说一句,你应该运行
AlwaysRun('other_project_dir/executable')
。
否则,SCons 可能不会在必要时重建其他项目,因为它不知道其他项目中的依赖关系。