使用脚本在编译时生成代码

Man*_*nux 6 c c++ gcc

理想情况下,我希望能够将(非常重复的)C/C++代码添加到我的实际代码中,但是在编译时,代码可以来自蟒蛇脚本的stdout,就像使用宏一样.

例如,假设我想拥有依赖于给定类的公共属性的函数,能够在我的C++代码中编写以下内容将是一件幸事:

generate_boring_functions(FooBarClass,"FooBarClass.cpp")
Run Code Online (Sandbox Code Playgroud)

使用传统方法可行吗?或者我必须破解Makefile和临时源文件?

谢谢.

Jon*_*rdy 4

您很可能需要稍微调整一下 Makefile。generate_boring_functions编写一个(Python)脚本来读取每个源文件作为额外的预处理步骤,用正确的代码替换(或任何其他脚本宏)的实例(可能只需使用generate_boring_functions.py正确的参数进行调用)是很容易的,并且通过标准输入将源代码发送到编译器,从而绕过对临时文件的需求。

该死,现在我想做这样的东西。

编辑:像这样的规则,卡在 makefile 中,可用于处理额外的构建步骤。这是未经测试的,只是为了完整性而添加的。

%.o : %.cpp
    python macros.py $< | g++ -x cpp -c - -o $@
Run Code Online (Sandbox Code Playgroud)

  • @Manux,当您需要调试 python 输出时,直接管道到 gcc 可能会让您陷入痛苦的境地。我建议您保存到临时文件,然后将临时文件转移到 gcc。 (2认同)