给出以下最小的例子.
cmake_minimum_required(VERSION 2.8)
project(include_test)
add_custom_command(OUTPUT OtherCMakeLists.txt
COMMAND "${CMAKE_CURRENT_BINARY_DIR}/create_other_cmakelists")
add_custom_target(do_something DEPENDS OtherCMakeLists.txt)
do_something应该做的是首先创建OtherCMakeLists.txt.现在,让我们假设do_something之后必须做其他事情,例如编译一些代码.我希望当执行其他内容的目标时,CMakeLists.txt的行为就像在include中包含了OtherCMakeLists.txt一样.
这可能吗?
作为一个例子,为什么这可能有用:OtherCMakeLists.txt可能会添加一些对进一步编译有影响的编译器标志.
最佳答案 据我所知,无法使用自定义目标/命令生成CMakeLists.txt文件,并使用包含生成的CMakeLists.txt的包含CMake命令
问题是include命令在所谓的“配置时”被调用(当cmake可执行文件试图解析所有CMakeLists.txt时),但是文件的生成(CMakeLists.txt)是在“Build time”执行的(当make时)在生成的构建系统上调用命令)