我需要能够从一个CMake函数或宏中停止CMake处理。我不想只停止处理当前文件,但是会停止所有CMake处理。现在,我正在使用message(FATAL_ERROR "Foo")。文档 for message声明它做的正是我所需要的:
CMake错误,停止处理和生成
但是,我希望能够在不产生错误的情况下做到这一点。我也不需要留言。我只想完全退出。有办法这样做吗?
发布于 2019-07-25 00:15:41
如果CMakeLists.txt层次结构相当浅,则可以调用一次或两次return() (取决于您是调用add_subdirectory()还是在宏/函数中),以返回到调用文件或函数并退出CMake处理。
如果您的项目层次结构更复杂,并且希望从任意位置退出CMakes,则不存在本机CMake命令来支持该命令。但是,您可以使用自己的解决方案(诚然,有点吓人)来终止cmake。
function(exit_cmake)
if(UNIX)
set(KILL_COMMAND "killall")
execute_process(COMMAND ${KILL_COMMAND} -9 cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)
else()
set(KILL_COMMAND "taskkill")
execute_process(COMMAND ${KILL_COMMAND} /IM cmake.exe /F
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)
endif()
endfunction()如果将其包含在顶级CMake文件中,则可以从CMakes中的任何位置调用它以静默退出。
警告:这将终止所有当前正在运行的CMake进程,而不仅仅是当前进程。因为您强制进程终止,所以您的CMake文件/缓存可能处于奇怪的状态。
https://stackoverflow.com/questions/57192628
复制相似问题