cmake基于目标的条件编译

时间:2018-06-15 00:08:52

标签: c++ build cmake c-preprocessor

我有一个很大的代码库,它可以使用为Cmake 2.6编写的CMakeLists.txt在有和没有MPI的情况下编译;我想用基于目标的语法(针对CMake 3.9+)重构CMakeLists.txt。

在源文件中,这由C预处理器启用:

#ifdef USE_MPI
...
#endif

当前的CMakeLists.txt使用add_definitions(-DUSE_MPI)切换预处理器,set(MPI_LIB "")target_link_libraries( ... ${MPI_LIB} )ifelse进行的条件编译每个目标,如果目标数量增加,它会很快变得混乱。

我想

  1. 为没有target_link_libraries( ... PUBLIC MPI::MPI ...)if的所有目标撰写else

  2. 只需一行即可为所有目标切换预处理器。

  3. 我的想法是如果找不到MPI,则创建一个虚拟目标。是否可以在CMake中创建虚拟目标?

0 个答案:

没有答案