首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >add_definitions对configure_file

add_definitions对configure_file
EN

Stack Overflow用户
提问于 2010-09-23 18:01:20
回答 2查看 1.1K关注 0票数 2

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

我知道如何在CMake中实现这一目标的两种可能性:

  1. 用这些预处理器定义创建一个模板文件,将其在CMakeLists中传递给configure_file(),最后将生成的配置文件包括在每个源文件中,
  2. 直接使用CMakeLists.

中的add_definitions(-DLIB_DEFINED)。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-23 19:48:16

根据您使用的库的数量,如果遵循第二种方法,编译器的调用就会变得很大。所以我会说,对于那些只有2-3个可选库的小项目,应该遵循方法2,但是如果它更像10,最好遵循方法1,这样编译输出就能保持可读性。

票数 1
EN

Stack Overflow用户

发布于 2010-09-24 23:44:25

方法1通常更可取,因为您还可以将该文件作为配置的标题安装,从而允许使用/链接到您的代码的其他项目使用相同的设置。还可以检查文件并查看项目是如何配置的。这两种方法都能工作,有时add_definitions是更好的方法(一种或几种定义,在初始编译后保留这些定义没有好处)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3781222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档