【发布时间】:2018-04-21 03:42:12
【问题描述】:
我正在尝试使用 Gtest 进行单元测试。
我正在创建另一个项目,其中包含要测试的原始项目(通过链接)中的文件。然后,在新项目中,我创建了要测试的函数或单元的附加依赖项的假实现和模拟。在原始项目的文件中,我使用#ifdef 来包含原始依赖项或假实现
我面临的问题是我需要按特定顺序编译文件,以便在构建测试项目时包含虚假实现。 我在带有 MinGW、GNU Builder 的 Windows 10 上使用 MCUXpresso
预测任何解决方法或方法来控制文件的编译顺序。
#ifdef IsTesting //This is part or original project, original header files
#include "Fake_dependency"
#else
#include "Original_Dependency"
#endif
然后在我定义的新项目中
#define IsTesting true // Part of Test_Project, followed by other code for testing
当我编译新项目或测试项目时,我需要此文件定义此变量,以便先编译或早于我从原始项目链接的文件进行编译
【问题讨论】:
-
cpp 文件的编译顺序无关紧要。也许你的意思是链接顺序?
-
编译顺序在 C++ 中并不重要。您可能需要在 C++ 文件中包含正确的头文件...
-
我不太明白为什么顺序与您的情况相关,但如果您确实需要按特定顺序编译,那么您可以构建自己的
Makefile。 -
我收到编译错误,因为它试图包含新项目中不存在的头文件。发生这种情况是因为编译器不知道该变量是在编译时定义的,因此我没有任何控制权。
-
以某种方式编写自己的 Makefile 是不可能和/或不允许的。 MCUXpresso 生成自己的 Makefile 并在每次构建中覆盖,因此编辑它们也不起作用
标签: c++ eclipse compilation include