cmake和便携式nul//dev/null设备
在我的Cmake脚本中,我需要将标准输出重定向到cmake和便携式nul//dev/null设备,cmake,portability,Cmake,Portability,在我的Cmake脚本中,我需要将标准输出重定向到NUL//dev/null设备。我在CMake文档中搜索了一个可移植的解决方案,但没有找到什么 我可以做类似的事情 if (WIN32) set(NULDEV NUL) else() set(NULDEV /dev/null) endif() 并在代码${NULDEV}中使用,但我更喜欢CMake附带的便携式解决方案 编辑使用表格: add_custom_target(docs COMMENT "Generating docume
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\u process()
运行shell命令,并希望获得输出。您可以使用OUTPUT\u QUIET
和/或ERROR\u QUIET
选项
从文件中:
例1:
如果您使用的是
add\u custom\u target()
,那么很遗憾,这并不是那么简单。你能做的是:
例2:
# generate_docs.cmake
execute_process(COMMAND "${THE_PROGRAM}" argument OUTPUT_QUIET)
add_custom_target(docs
COMMENT "Generating documentation."
COMMAND ${CMAKE_COMMAND} -P generate_docs.cmake
)
我需要将标准输出重定向到NUL//dev/null设备
为什么?您是否以某种方式使用NUL或/dev/null设备?某些进程会创建一些与标准输出无关的输出,并干扰CMake输出,因此将其重定向到NUL
//dev/null
位存储桶(我无法影响此输出)。因此,您不希望重定向到/dev/null,而是希望忽略标准输出。这是XY问题。如果从cmake运行execute\u process
,则可以将输出捕获到变量或文件中。哪些进程创建输出?你如何从cmake中调用它们?我刚刚看到,我必须研究这个,希望它能带来一些东西,我希望cmake内置了一些可以直接重定向的东西。你如何在你的cmake脚本中使用${NULDEV}
?你能举个例子吗?
# generate_docs.cmake
execute_process(COMMAND "${THE_PROGRAM}" argument OUTPUT_QUIET)
add_custom_target(docs
COMMENT "Generating documentation."
COMMAND ${CMAKE_COMMAND} -P generate_docs.cmake
)