我可以在 cmake 中使用一个变量来使其表现得像传递了 -q 选项一样吗?这会很好,因为我有一个非常模块化的构建,它会使 cmakes 输出变得混乱。我在 C++ 项目中使用它。
问问题
10303 次
4 回答
12
从 cmake 3.1 开始,设置CMAKE_INSTALL_MESSAGE
也非常有用。例如,set(CMAKE_INSTALL_MESSAGE LAZY)
将跳过-- Up-to-date:
消息。
于 2017-04-05T13:55:08.690 回答
11
没有我知道的变量。但是,您可以将以下 hack 添加到顶级 CMakeLists.txt 的开头(在project
调用之前)以在一定程度上控制输出:
function(message)
list(GET ARGV 0 MessageType)
if(MessageType STREQUAL FATAL_ERROR OR
MessageType STREQUAL SEND_ERROR OR
MessageType STREQUAL WARNING OR
MessageType STREQUAL AUTHOR_WARNING)
list(REMOVE_AT ARGV 0)
_message(${MessageType} "${ARGV}")
endif()
endfunction()
这会覆盖 CMake 的内置message
命令并禁止所有未键入STATUS
的消息,从而正确输出更重要的类型。
例如,WARNING
消息的输出将从
CMake Warning at CMakeLists.txt:14 (message): This is a dummy warning message.
到
CMake Warning at CMakeLists.txt:8 (_message): This is a dummy warning message. Call Stack (most recent call first): CMakeLists.txt:14 (message)
请注意,生成警告消息的实际行列在调用堆栈中,而不是输出消息的第一行。
最后,这对指示配置尝试成功或失败的摘要输出没有影响。
于 2012-05-09T08:54:06.590 回答
1
set(CMAKE_MESSAGE_LOG_LEVEL "WARNING")
https://cmake.org/cmake/help/latest/variable/CMAKE_MESSAGE_LOG_LEVEL.html
于 2020-11-23T02:15:25.550 回答
1
对于 CMake 的安装部分,它倾向于每个文件打印一行(a la-- Up-to-date: /some/destination/path
和-- Installing: /some/destination/path
),您可以这样做
set(CMAKE_INSTALL_MESSAGE LAZY) # Don't tell us about up-to-date files.
不会打印已经存在的文件(如果您重复运行 install ,就像在开发过程中一样),甚至
set(CMAKE_INSTALL_MESSAGE NEVER) # Install silently.
于 2021-07-08T22:02:26.933 回答