c++ - C++如何使用相同的.h并在使用相同的.h时选择不同的.cpp?

标签 c++ cmake compilation

这是场景:
“baselogger.h”包含API,我在两种情况下(案例A和案例B,A对应于1.cpp,B对应于2.cpp)实现了这些API,然后如何使用不同的cpp编写宏以编译不同的案例在“baselogger.h”中实现API?

最佳答案

您不必为此使用宏。相反,在情况A中可以编译并与1.cpp链接,在情况B中可以编译并与2.cpp链接。
CMake的例子:

option (CASE_A "Descriptive description" ON)
if (CASE_A)
    target_sources(target_name PRIVATE 1.cpp)
else ()
    target_sources(target_name PRIVATE 2.cpp)
endif ()
安装了选件,您可能会遇到其他情况。这对于将API移植到不同系统通常很有用。

但是基于宏的解决方案也可以工作:
// 1.cpp
#ifdef MACRO_CASE_A
// case A implementation for baselogger.h
#endif

// 2.cpp
#ifndef MACRO_CASE_A
// case B implementation for baselogger.h
#endif
用这种方法,总是简单地编译两个源。

关于c++ - C++如何使用相同的.h并在使用相同的.h时选择不同的.cpp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63626759/

相关文章:

c++ - 基于颜色的 OpenCV 边缘/边界检测

c++ - 无法在 GCC 中使用数组

C++ 在 lambda 函数中使用此指针和绑定(bind)

c++ - cLion + Qt5 - 退出代码 -1073741515 (0xC0000135)

cmake - 使用 CMake 链接两个依赖项目

c++ - 创建文件会中断 Makefile for C++ 中的 -DDEBUG 标志

C++编译和链接

c++ - 使用模板解决了多重定义

android - 如何在android中执行多个CMakeLists.txt文件

java - 如何编译多个相互依赖的java文件?