我有一个很大的代码库,它可以使用为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} )
与if
和else
进行的条件编译每个目标,如果目标数量增加,它会很快变得混乱。
我想
为没有target_link_libraries( ... PUBLIC MPI::MPI ...)
和if
的所有目标撰写else
。
只需一行即可为所有目标切换预处理器。
我的想法是如果找不到MPI,则创建一个虚拟目标。是否可以在CMake中创建虚拟目标?