definitions与configure

definitions与configure

我需要有条件地编译几部分代码,具体取决于系统上是否存在某些库。它们的存在是在CMake配置阶段确定的,我计划使用预处理程序定义(例如#ifdef(LIB_DEFINED)... #endif)告诉编译器结果。

我知道两种在CMake中实现的可能性:

  • 创建具有这些预处理器定义的模板文件,将其传递到CMakeLists中,传递给configure_file(),最后在每个源文件
  • 中#include产生的配置文件
  • 在CMakeLists中直接使用add_definitions(-DLIB_DEFINED)。

  • 第一种方法对我来说似乎更复杂,所以采用第二种方法而不是第二种方法有什么好处(例如避免一些可移植性问题)?

    最佳答案

    根据您使用的库的数量,如果遵循第二种方法,编译器的调用将变大。因此,对于那些只有2-3个可选库的小型项目,请遵循方法2,但如果它更像10,则最好遵循方法1,以便编译输出保持可读性。

    关于c++ - add_definitions与configure_file,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3781222/

    10-11 19:13