我有一部分代码在CMake。它应该将文件从source
文件夹复制到destination
文件夹,我希望它是静音的。
根据文档set (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
有什么办法让这个函数静音吗?
文档告诉我们变量CMAKE_INSTALL_MESSAGE
只影响oninstall()
command:
指定
install()
命令生成的安装脚本代码的详细信息
命令file(INSTALL)
不受该变量影响。
如果您希望file(INSTALL)
是安静的,那么使用file(COPY)
代替(其他参数将相同)。
关于file(INSTALL)
的部分只描述了内部实现冗长的:
(使用
file(INSTALL)
命令)
对于CMakeLists.txt
中的每个install()
调用,CMake都会在cmake_install.cmake
安装脚本中添加一个对file(INSTALL)
的调用。该调用使用了一些未记录的参数,其中一个参数指定了冗长性。未记录的参数没有在用户文档中描述,不应该在CMake本身之外使用。
file(INSTALL)
的部分不知道为什么内部实现会在文档中描述。
。对
的调用install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/text.txt DESTINATION share)
在cmake_install.cmake
中生成以下file(INSTALL)
调用:
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share" TYPE FILE FILES "/home/tester/tests/cmake/text.txt")
与<<p> strong>无证选项类型。相同的调用,但将CMAKE_INSTALL_MESSAGE
变量设置为NEVER
后生成
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share" TYPE FILE MESSAGE_NEVER FILES "/home/tester/tests/cmake/text.txt")
与<<p> strong>无证关键字MESSAGE_NEVER
.
再次强调,千万不要在正常的CMake项目中使用这些未记录的选项。