我的项目仅由两个文件组成:
text.foo
main.cpp
main.cpp代码如下所示:
#include "foo.h"
#include "bar.h"
int main()
{
...
}
我有一个自定义构建器,它接受输入text.foo
并生成以下文件作为输出:
foo.h
bar.h
text.cpp
必须编译 text.cpp
以生成text.o
,而main.o
必须链接到.h
以生成最终的可执行文件。 main.cpp
个文件是.h
的依赖项。我需要编写一个SConstruct文件来确保以下内容:
text.foo
个文件.h
时,必须重新生成main.cpp
个文件
在编译Program('myProgram', ["main.cpp", "text.foo"])
之前我和Builder和Emitters一起玩,但我似乎无法获得第1点和第2点。 理想情况下,我希望在SConstruct文件中包含以下行:
{{1}}
答案 0 :(得分:1)
您可能需要一个知道如何从text.foo
构建text.cpp等的构建器这有点棘手,因为你从text.foo生成了多个没有任何关系的文件。但是,构建器的发射器应声明它正在创建foo.h,bar.h和text.cpp
然后你只需要
Program('myprogram', ['main.cpp', 'test.cpp'])
你已经完成了,因为scons会注意到main.cpp需要foo.h来构建,并且会发现它有一种生成foo.h和test.cpp的方法,并且会生成它们。