У меня есть следующие настройки:
- build/
- conanbuildinfo.cmake (generated)
- conanfile.py
- CMakeLists.txt
Команда conan
запускается перед CMake, генерируя conanbuildinfo.cmake.Он содержит пути включения и т. Д., Которые будут использоваться во время компиляции позже.Если я изменю conanfile, я хочу снова запустить conan и повторно запустить CMake из сгенерированной сборки ниндзя.У меня есть скрипт, который может вызвать conan, и он обновляет все правильно.Однако это происходит после запуска 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
- Выполнение cmake из сценария reconfigure.py
- Прикосновение к основному CMakeLists.txt из сценария reconfigure.py
- Использование execute_process для запуска скрипта