gpt4 book ai didi

c++ - 如何使用生成 .cpp 和 .h 文件的自定义生成器?

转载 作者:行者123 更新时间:2023-11-28 06:23:45 26 4
gpt4 key购买 nike

我的项目只有两个文件:

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 文件来确保以下内容:

  1. .h 文件必须在编译main.cpp之前生成
  2. 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 的方法,并且会生成它们。

关于c++ - 如何使用生成 .cpp 和 .h 文件的自定义生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com