cmake:检查文件是否在构建时存在,而不是在cmake配置期间

gim*_*ilk 3 file exists cmake

我有一个自定义生成命令,需要检查是否存在某个文件.我试过用

IF(EXISTS "/the/file")
...
ELSE()
...
ENDIF()
Run Code Online (Sandbox Code Playgroud)

但该测试仅评估一个; 当cmake第一次运行时.每次制作完成后我都需要它来执行测试.什么是在制作时检查的方法?谢谢.

Fra*_*ser 12

您可以使用命令行选项add_custom_command在脚本模式下调用CMake本身-P.

所以你的命令将是这样的:

set(FileToCheck "/the/file")
add_custom_command(TARGET MyExe
                   POST_BUILD
                   COMMAND ${CMAKE_COMMAND}
                       -DFileToCheck=${FileToCheck}
                       -P ${CMAKE_CURRENT_SOURCE_DIR}/check.cmake
                   COMMENT "Checking if ${FileToCheck} exists...")
Run Code Online (Sandbox Code Playgroud)

和你的脚本文件"check.cmake"将是这样的:

if(EXISTS ${FileToCheck})
  message("${FileToCheck} exists.")
else()
  message("${FileToCheck} doesn't exist.")
endif()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,虽然看起来很多工作只是检查文件:) (3认同)