如何使用生成 .cpp 和 .h 文件的自定义生成器?
How can I use custom builders that generate .cpp and .h files?
我的项目只有两个文件组成:
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
的依赖项。我需要编写一个 SConstruct 文件来确保以下内容:
.h
文件必须在编译 main.cpp 之前生成
- 当
text.foo
改变时,必须重新生成.h
文件
在编译 main.cpp
之前
我正在玩 Builder 和 Emitter,但我似乎无法获得第 1 点和第 2 点。
理想情况下,我希望在 SConstruct 文件中包含以下行:
Program('myProgram', ["main.cpp", "text.foo"])
您可能需要一个知道如何从 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 的方法, 并将生成它们。
我的项目只有两个文件组成:
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
的依赖项。我需要编写一个 SConstruct 文件来确保以下内容:
.h
文件必须在编译 main.cpp 之前生成- 当
text.foo
改变时,必须重新生成.h
文件 在编译main.cpp
之前
我正在玩 Builder 和 Emitter,但我似乎无法获得第 1 点和第 2 点。 理想情况下,我希望在 SConstruct 文件中包含以下行:
Program('myProgram', ["main.cpp", "text.foo"])
您可能需要一个知道如何从 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 的方法, 并将生成它们。