如何在cmake 2.8.12中删除每个目标的定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在cmake 2.8.12中删除每个目标的定义相关的知识,希望对你有一定的参考价值。

我正在使用cmake 2.8.12。

我通过调用add_definitions()来使用具有相同定义的多个目标。我想找出如何删除单个目标的定义,并用其他一些定义或默认定义替换它们,比如我没有调用add_definitions()。

答案

这里更好的方法是为单个目标而不是全局添加定义。

为此,您应该使用target_compile_definitions而不是add_definitions

例如,而不是

add_definitions(-DSOMEMACRO)
add_executable(myExecutable main.cpp)

你会用的

add_executable(myExecutable main.cpp)
target_compile_definitions(myExecutable PUBLIC -DSOMEMACRO)

这允许您对定义进行细粒度控制,并且通常是设置它们的首选方式。我认为为每个目标添加定义比从某些目标中删除定义更容易。

以上是关于如何在cmake 2.8.12中删除每个目标的定义的主要内容,如果未能解决你的问题,请参考以下文章

CMake基础教程(30)CMake构建系统概览

cmake - 如何根据谁使用它来定义目标库的符号

如何避免 cmake 子项目中的名称冲突?

在 CMake 中默认构建自定义目标

有没有办法强制 Visual Studio 2017 接受 CMAKE 2.8.12.2

在 cmake 中将目标文件名作为编译定义传递