告诉cmake的安静(tell cmake to be quiet)

2019-06-24 06:31发布

是否有一个变量,我可以在cmake的使用,使其像它传递的-q选项? 这将是不错的,因为我有一个非常模块化的结构是变得混乱与cmakes输出。 我在一个C ++项目中使用它。

Answer 1:

有没有变化,我知道的。 但是,您可以在下面的技巧添加到您的顶级的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) 

需要注意的是,其中生成该警告消息的实际线在调用栈中列出而不是输出消息的第一行。

最后,这对摘要输出指示配置尝试的成功或失败没有影响。



Answer 2:

作为cmake的3.1,创下CMAKE_INSTALL_MESSAGE也是非常有用的。 例如, set(CMAKE_INSTALL_MESSAGE LAZY)将跳过-- Up-to-date:消息。



文章来源: tell cmake to be quiet
标签: build cmake