gpt4 book ai didi

c++ - CMake:何时使用 add_definitions 而不是 set_target_properties(目标 PROPERTIES COMPILE_DEFINITIONS 定义)

转载 作者:IT老高 更新时间:2023-10-28 12:45:26 26 4
gpt4 key购买 nike

在 CMake 文档中,我们可以阅读:

add_definitions

Adds flags to the compiler command line for sources in the current directory and below.

COMPILE_DEFINITIONS property on directories

COMPILE_DEFINITIONS: Preprocessor definitions for compiling a directory's sources.

COMPILE_DEFINITIONS property on targets

COMPILE_DEFINITIONS: Preprocessor definitions for compiling a target's sources.

COMPILE_DEFINITIONS property on source files

COMPILE_DEFINITIONS: Preprocessor definitions for compiling a source file.

COMPILE_DEFINITIONSadd_definitions 功能似乎重叠。 COMPILE_DEFINITIONS 属性似乎更灵活。

所以看来 COMPILE_DEFINITIONS 属性完成了 add_definitions 所做的一切,甚至更多。

那么,在哪些情况下必须因为不能使用 COMPILE_DEFINITIONS 属性而调用 add_definitions?

最佳答案

add_definitions 自从十多年前第一个版本的 CMake 上线以来,CMake 就已经存在。

COMPILE_DEFINITIONS 只是更新、更灵活、更精细的方法。

它们将永远存在:由于世界上 99% 以上的现有 CMakeLists.txt 文件都使用 add_definitions,因此删除它是不明智的. CMake 开发人员非常努力地保持向后兼容性……有时会损害清晰度和简单性。有时以多种不同的方式做本质上相同的事情。

所以:add_definitions 主要用于配置预先存在的 CMakeLists 文件——对于那些在引入 COMPILE_DEFINITIONS 之前就已经存在的项目。而且,由于这些项目使用它,任何基于人们从阅读这些 CMakeLists 文件中学到的东西的新项目也很可能使用 add_definitions

但是如果单独使用 COMPILE_DEFINITIONS 就足以满足您的需求,那肯定没有错。

关于c++ - CMake:何时使用 add_definitions 而不是 set_target_properties(目标 PROPERTIES COMPILE_DEFINITIONS 定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com