如何在 CMake 文件中添加定义 QT_NO_DEBUG_OUTPUT?

Posted

技术标签:

【中文标题】如何在 CMake 文件中添加定义 QT_NO_DEBUG_OUTPUT?【英文标题】:How to add definition QT_NO_DEBUG_OUTPUT in a CMake file? 【发布时间】:2018-03-17 06:09:16 【问题描述】:

我正在使用 ROS,因此编写 CMake 文件。 在 Qt .pro 文件中,我们可以使用:

DEFINE+=QT_NO_DEBUG_OUTPUT

我们如何在 CMake 文件中做到这一点?我试过了:

add_definitions(QT_NO_DEBUG_OUTPUT)

但它给了我以下错误:

c++:错误:QT_NO_DEBUG_OUTPUT:没有这样的文件或目录

【问题讨论】:

试试这个 add_definition(-DQT_NO_DEBUG_OUTPUT) 【参考方案1】:

add_definitions 要求您根据编译器语法编写标志:在您的情况下使用-D(在视觉上将是/D)。你应该写:

add_definitions(-DQT_NO_DEBUG_OUTPUT)

一种更灵活、更细粒度的方法是使用target_compile_definitions为每个目标添加定义:

add_executable(foo ...)
target_compile_definitions(foo PUBLIC QT_DEBUG_NO_OUTPUT)

请注意,这里不需要-D

【讨论】:

以上是关于如何在 CMake 文件中添加定义 QT_NO_DEBUG_OUTPUT?的主要内容,如果未能解决你的问题,请参考以下文章

CMake:如何添加仅针对一种配置执行的自定义命令?

CMake 添加和删除宏定义以编译共享库/可执行文件

如何使用 CMake 正确添加包含目录

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

无法弄清楚如何让 CMake 为自定义 clang 驱动程序提取正确的标头

如何为依赖目标添加 cmake 定义?