CMAKE_INSTALL_MESSAGE变量不会使文件静音(安装...



我有一部分代码在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项目中使用这些未记录的选项。

最新更新