我有这个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
更改已经足够了。
答案 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
”包含的标题轻松扩展。