Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmake和便携式nul//dev/null设备_Cmake_Portability - Fatal编程技术网

cmake和便携式nul//dev/null设备

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

在我的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\u process()
运行shell命令,并希望获得输出。您可以使用
OUTPUT\u QUIET
和/或
ERROR\u QUIET
选项

从文件中:

例1:
如果您使用的是
add\u custom\u 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
    )
    

  • 我需要将标准输出重定向到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
    )