Есть ли способ определить зависимости этапа установки цели в cmake? Вот моя ситуация:В зависимости от мишени INSTALL внешнего проекта CMake
Моя цель - загрузить исходный код этого проекта и построить его без предварительной установки зависимостей. Другими словами, я хотел бы, чтобы зависимости распознавались и устанавливались до того, как они попытались создать основную цель. Например, я работаю в том числе Leptonica в качестве внешнего проекта:
set(leptonica_build "${CMAKE_CURRENT_BINARY_DIR}/leptonica")
ExternalProject_Add(
leptonica
DOWNLOAD_DIR ${download_dir}
BINARY_DIR ${leptonica_build}
GIT_REPOSITORY ${OpenCV_git_repository}
GIT_TAG ${OpenCV_git_tag}
TLS_VERIFY true
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${DOC_READER_INSTALL_PREFIX}
)
Запуск в цель leptonica правильно строит и устанавливает библиотеку во временную директорию, делая сам доступными для других целей потреблять:
add_dependencies(myProgram leptonica)
find_library(LEPT_LIB lept)
target_link_libraries(myProgram ${LEPT_LIB})
проблема заключается в том, что, когда /TMP очищается и CMake сначала выполняется с мишенью MyProgram, liblept.so не найден, потому что он еще не был установлен, и, следовательно, выше по потоку зависимость MyProgram не не было выполнено до послесделать установку была запущена.
Другими словами, я хотел бы, чтобы сценарий сборки сначала загружал и устанавливал зависимости, а затем пытался найти расположение библиотек, необходимых для шагов последующей сборки. Можно ли это сделать с cmake, или я должен достичь этой цели другим способом?
Спасибо, это стратегия, с которой я сейчас работаю. – Nate