我在CMake中有一部分代码。它应该将文件从source
文件夹复制到destination
文件夹,我希望它是无声的。
根据the documentationset (CMAKE_INSTALL_MESSAGE NEVER)
应该会让它安静下来。但它没有。
这是代码:
# Silence installation messages
set (SAVE_CMAKE_INSTALL_MESSAGE ${CMAKE_INSTALL_MESSAGE}) # Saving the state
set (CMAKE_INSTALL_MESSAGE NEVER)
message("CMAKE_INSTALL_MESSAGE = ${CMAKE_INSTALL_MESSAGE}") # NEVER
file(INSTALL ${SOURCE} DESTINATION ${DEST} USE_SOURCE_PERMISSIONS)
set (CMAKE_INSTALL_MESSAGE ${SAVE_CMAKE_INSTALL_MESSAGE}) # Restitute
message("CMAKE_INSTALL_MESSAGE = ${CMAKE_INSTALL_MESSAGE}") # <empty>
它不是静默的,它会打印出包含-- Installing: /some/destination/path
和-- Up-to-date: /some/destination/path
的每个文件
有什么办法能关掉那个功能吗?
1条答案
按热度按时间xqnpmsa81#
documentation表示变量
CMAKE_INSTALL_MESSAGE
仅影响install()
命令:指定
install()
命令生成的安装脚本代码的详细程度命令
file(INSTALL)
不受该变量的影响。如果希望
file(INSTALL)
是安静的,则使用file(COPY)
(其他参数相同)。关于
file(INSTALL)
的部分只描述了内部实现的详细程度:(使用
file(INSTALL)
命令)对于
CMakeLists.txt
CMake中的每个install()
调用,都会向安装脚本cmake_install.cmake
添加一个对file(INSTALL)
的调用。该调用使用了一些 undocumented 参数,其中一个参数指定了详细程度。未记录的参数在用户文档中没有描述,不应在CMake本身之外使用。也就是说,当阅读文档时,用户可以简单地省略关于
file(INSTALL)
的部分。不知道为什么文档中描述了内部实现。例如,调用
会在
cmake_install.cmake
中产生下列file(INSTALL)
呼叫:带有未记录选项TYPE。
相同的调用,但在将
CMAKE_INSTALL_MESSAGE
变量设置为NEVER
后,将生成使用未记录关键字
MESSAGE_NEVER
。再次强调,切勿在常规CMake项目中使用这些未记录的选项。