CMake(版本> = 2.8.7)是否有可能在配置阶段完成之前作为最后一步执行宏或命令?
该功能应在屏幕上打印以下行之前执行:
-- Configuring done
-- Generating done
到目前为止,我无法找到可以用作依赖项的 CMake 目标,以使用add_custom_command
add_custom_target
or实现此目标add_dependencies
。
编辑:我们有一个导出多个 CMake 宏的库,其中一些宏必须CMakeLists.txt
在所有其他 CMake 命令运行后在每个文件的末尾执行。理想情况下,可以通过在文件macros.cmake
中包含文件来实现所需的行为,CMakeLists.txt
而无需在该文件的末尾添加额外的命令CMakeLists.txt
。
也可以通过在一个宏中收集所有功能来实现这一点,该宏需要在CMakeLists.txt
. 但是,已经有几个依赖库需要调整,解决这个问题的方法将省略这些额外的工作。此外,可能会忘记添加宏,或者很容易违反将其作为最后一条语句的要求。
示例macros.cmake
:
macro(FINAL_MACRO)
message(STATUS "Last step before finishing Configure phase")
endmacro()
# HERE: something like add_custom_target(final_steps)
# followed by something like add_dependencies(final_steps cmake_configure_finished)
示例顶层CMakeLists.txt
:
cmake_minimum_required(VERSION 2.8.7)
include(macros.cmake)
add_subdirectory(source)
add_subdirectory(interfaces)
# Here FINAL_MACRO should get executed without explicitly writing it down
如果没有其他选项,我们将不得不要求每个用户在他们的CMakeLists.txt
文件末尾调用一个特殊的宏。