是否有自动方式来合并C++实现(.cpp)和标头(.h)文件

wk1*_*989 2 c++ automated-tests unit-testing c-preprocessor

我正在尝试使用CPPUnit为大型代码库创建一个单元测试框架.我需要能够测试单个模块,所有模块都是以特定根模块开头的模块树的一部分.

由于非技术原因,我无法触摸生产文件(我的原始方法涉及向根模块添加ifdef).所以我想到了另一种方法,即创建根模块头的副本以及属于中间继承层次结构中的模块的头的副本.由于涉及的模块数量以及每个模块源的大小.我正在寻找一种方法来自动为我合并.

所以对于foo.h和foo.cpp,我正在寻找一种输出fooTest.h的工具,其中fooTest.h包含foo.cpp/foo中所有内容的声明和定义. H

编辑:谢谢你的答案,我忘了提到的一件事是,fooTest.h的内容不应该是foo.cpp和foo.h的合并结果.我需要对根fooTest.h进行微小的更改,以使其成为一个合适的模拟模块进行测试.因此,简单地使用包含将不起作用.我将研究连接文件,看看是否能解决我的问题.

Ste*_*ker 5

gcc -E
Run Code Online (Sandbox Code Playgroud)

只运行预处理器:

  -E  Stop after the preprocessing stage; do not run the compiler proper.
      The output is in the form of preprocessed source code, which is
      sent to the standard output.
Run Code Online (Sandbox Code Playgroud)

这将具有内联所有#include指令的效果.但是,它也会获取标准库 - 但这些不应该包括多次.

  • 如果他无法弄清楚如何正确运行gcc,他就没有办法尝试编写单元测试套件. (2认同)