SCons - 为库中的所有对象添加依赖项

时间:2016-07-25 11:54:10

标签: c build scons

我有这个SConstruct文件:

lib=Library("foo", "foo.c", CPPFLAGS="-include foo.h")

由于-include,我需要在foo.h更改时重新编译。 SCons不会自动解决这个问题。

我尝试添加dependecy - Depends(lib, "foo.h") - 但它只会导致无用的重新连接。

如何foo.c更改时foo.h重新编译?

额外的功劳 - 我真正需要的是不仅在foo.h更改时重新编译,而且在包含更改的标头时重新编译。但检测foo.h更改已经足够了。

1 个答案:

答案 0 :(得分:1)

作为第一枪,这是我能想到的最好的:

# Construct special environment
env = Environment()
env.Append(CPPFLAGS = ['-include', 'foo.h'])

# Compile objects separately
objs = env.Object(Glob('*.c'))

# Add explicit dependencies
add_deps = ['foo.h']
for o in objs:
    env.Depends(o, add_deps)

# Create final library
env.Library('myfoo', objs)

扩展程序*.o未直接在构建说明的任何位置提及,add_deps可以通过“foo.h”包含的标题轻松扩展。