【发布时间】:2010-08-24 18:27:26
【问题描述】:
我有一个 scons 项目,它强制包含几个头文件作为编译器标志。
# Forced include files passed directly to the compiler
env.Append(CCFLAGS = ['/FIinclude.h'])
项目中的任何文件都不包含这些文件。我需要为它们添加一个明确的依赖关系。
forced_include_headers = ['include.h']
# Trying to add an explicit dependency for each build target
for object in BUILD_TARGETS:
env.Depends(object, forced_include_headers)
我遇到的问题是BUILD_TARGETS 列表是空的。它似乎只包含从COMMAND_LINE_TARGETS 或DEFAULT_TARGETS 传递的东西。我们项目中的所有目标都是隐式构建的。我们不使用env.Default等。有没有办法获取隐式目标列表,还是我必须手动构建它?我注意到TARGETS 是保留的,似乎也不包含我想要的内容。
我可以为它们各自的 SConscript 文件中的所有目标添加一个env.Depends(target, forced_include_headers),但该项目非常大。
【问题讨论】:
-
我最终通过为项目中的每个目标调用一个 psuedo-builder 来解决这个问题(无论如何都需要这样做)。在对 psuedo-builder 的调用中添加了依赖项。