cmake 和便携式 nul / /dev/null 设备
cmake and portable nul / /dev/null device
在我的 Cmake 脚本中,我需要将标准输出重定向到 NUL
/ /dev/null
设备。我在 CMake 文档中搜索了可移植的解决方案,但没有找到。
我可以做类似的事情
if (WIN32)
set(NULDEV NUL)
else()
set(NULDEV /dev/null)
endif()
并在代码中使用 ${NULDEV}
,但我更喜欢 CMake 附带的便携式解决方案。
编辑使用形式:
add_custom_target(docs
COMMENT "Generating documentation."
COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_BINARY_DIR} "${THE_PROGRAM}" arguments > nul
)
这可能吗?
如果您是 运行 使用 execute_process()
的 shell 命令,并且想要完全输出。您可以使用 OUTPUT_QUIET
and/or ERROR_QUIET
选项。
来自 execute_process
文档:
OUTPUT_QUIET, ERROR_QUIET
The standard output or standard error results will be quietly ignored.
示例 1:
execute_process(COMMAND "${THE_PROGRAM}" argument OUTPUT_QUIET)
如果您使用的是 add_custom_target()
,那么很遗憾,它并不是那么简单。你可以做的是:
示例 2:
创建用于执行程序的包装器 cmake 脚本:
# generate_docs.cmake
execute_process(COMMAND "${THE_PROGRAM}" argument OUTPUT_QUIET)
让CMake执行封装脚本而不是直接运行程序:
add_custom_target(docs
COMMENT "Generating documentation."
COMMAND ${CMAKE_COMMAND} -P generate_docs.cmake
)
在我的 Cmake 脚本中,我需要将标准输出重定向到 NUL
/ /dev/null
设备。我在 CMake 文档中搜索了可移植的解决方案,但没有找到。
我可以做类似的事情
if (WIN32)
set(NULDEV NUL)
else()
set(NULDEV /dev/null)
endif()
并在代码中使用 ${NULDEV}
,但我更喜欢 CMake 附带的便携式解决方案。
编辑使用形式:
add_custom_target(docs
COMMENT "Generating documentation."
COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_BINARY_DIR} "${THE_PROGRAM}" arguments > nul
)
这可能吗?
如果您是 运行 使用 execute_process()
的 shell 命令,并且想要完全输出。您可以使用 OUTPUT_QUIET
and/or ERROR_QUIET
选项。
来自 execute_process
文档:
OUTPUT_QUIET, ERROR_QUIET The standard output or standard error results will be quietly ignored.
示例 1:
execute_process(COMMAND "${THE_PROGRAM}" argument OUTPUT_QUIET)
如果您使用的是 add_custom_target()
,那么很遗憾,它并不是那么简单。你可以做的是:
示例 2:
创建用于执行程序的包装器 cmake 脚本:
# generate_docs.cmake execute_process(COMMAND "${THE_PROGRAM}" argument OUTPUT_QUIET)
让CMake执行封装脚本而不是直接运行程序:
add_custom_target(docs COMMENT "Generating documentation." COMMAND ${CMAKE_COMMAND} -P generate_docs.cmake )