【发布时间】:2018-09-25 03:03:01
【问题描述】:
我有以下设置:
- build/
- conanbuildinfo.cmake (generated)
- conanfile.py
- CMakeLists.txt
conan 命令在 CMake 之前运行,生成 conanbuildinfo.cmake。这包含稍后在编译期间使用的包含路径等。如果我更改 conanfile,我想再次触发 conan 并从生成的 ninja 构建中重新运行 CMake。我有一个可以调用柯南的脚本,它会正确更新所有内容。但是,这发生在运行 CMake 之后,即使更改了 conanbuildinfo,CMake 也不会再次运行。这会导致忍者“看不到”依赖关系图中的变化,因此它不会重建它必须重建的所有内容。这意味着我必须运行ninja 两次才能更新所有内容。我目前触发重配置的方式是这样的:
set(DS_CONFIG_INDICATOR ${CMAKE_BINARY_DIR}/ds_configured)
add_custom_command(
DEPENDS ${PROJECT_SOURCE_DIR}/conanfile.py
OUTPUT ${DS_CONFIG_INDICATOR}
COMMAND ${CMAKE_COMMAND} -E env --unset=PYTHONPATH ${PYTHON_BINARY} ${PROJECT_SOURCE_DIR}/scripts/common/reconfigure.py ${DS_CONFIG_INDICATOR} ${PROJECT_SOURCE_DIR}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Checking if reconfigure is needed"
USES_TERMINAL
)
add_custom_target(ConanReconfigure
DEPENDS ${DS_CONFIG_INDICATOR}
)
有没有办法在这个脚本运行后触发重新配置?
我尝试使用以下方法但没有成功:
- CMAKE_CONFIGURE_DEPENDS
- 从 reconfigure.py 脚本运行 cmake
- 从 reconfigure.py 脚本中接触主 CMakeLists.txt
- 使用 execute_process 运行脚本
【问题讨论】: