我需要有条件地编译代码的几个部分,这取决于系统上是否有一些库。它们的存在是在CMake配置阶段确定的,我计划使用预处理器定义告诉编译器结果(比如#ifdef(LIB_DEFINED) . #endif)。
我知道如何在CMake中实现这一目标的两种可能性:
中的add_definitions(-DLIB_DEFINED)。
对于我来说,第一种方法似乎更复杂,因此,采取它而不是第二种方法有什么好处(例如,避免一些可移植性问题)?
发布于 2010-09-23 19:48:16
根据您使用的库的数量,如果遵循第二种方法,编译器的调用就会变得很大。所以我会说,对于那些只有2-3个可选库的小项目,应该遵循方法2,但是如果它更像10,最好遵循方法1,这样编译输出就能保持可读性。
发布于 2010-09-24 23:44:25
方法1通常更可取,因为您还可以将该文件作为配置的标题安装,从而允许使用/链接到您的代码的其他项目使用相同的设置。还可以检查文件并查看项目是如何配置的。这两种方法都能工作,有时add_definitions是更好的方法(一种或几种定义,在初始编译后保留这些定义没有好处)。
https://stackoverflow.com/questions/3781222
复制相似问题