CMAKE_INSTALL_MESSAGE无法屏蔽file(INSTALL...)输出,求解决办法
解决CMake中file(INSTALL)命令静默执行的问题
问题根源
CMAKE_INSTALL_MESSAGE变量仅对install()命令生效,file(INSTALL)并不受该变量控制,所以你设置CMAKE_INSTALL_MESSAGE NEVER后依然会看到输出。
解决方案
方案一:改用file(COPY)命令(推荐)
file(COPY)默认不会输出-- Installing:或-- Up-to-date:这类日志,同时支持USE_SOURCE_PERMISSIONS参数保留源文件权限,完全满足你的复制需求。修改后的代码如下:
file(COPY ${SOURCE} DESTINATION ${DEST} USE_SOURCE_PERMISSIONS)
方案二:保留file(INSTALL)的静默实现
如果必须使用file(INSTALL),可以通过execute_process调用CMake命令行工具执行安装,并屏蔽输出:
# 保存原变量状态(可选,若无需恢复可省略) set(SAVE_CMAKE_INSTALL_MESSAGE ${CMAKE_INSTALL_MESSAGE}) set(CMAKE_INSTALL_MESSAGE NEVER) # 跨平台执行静默安装 execute_process( COMMAND ${CMAKE_COMMAND} -E install ${SOURCE} ${DEST} --use-source-permissions OUTPUT_QUIET ERROR_QUIET ) # 恢复原变量状态 set(CMAKE_INSTALL_MESSAGE ${SAVE_CMAKE_INSTALL_MESSAGE})
OUTPUT_QUIET和ERROR_QUIET参数会屏蔽命令的标准输出和错误输出,实现静默效果。
补充说明
你代码中恢复CMAKE_INSTALL_MESSAGE时显示为空,是因为该变量初始状态未被设置,这并非导致当前问题的原因。
内容的提问来源于stack exchange,提问作者Mykola Tetiuk
相关产品推荐
相关产品推荐

