【发布时间】:2015-06-29 13:41:46
【问题描述】:
有没有办法在 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。所以 找不到,因为它还没有安装,因此 myProgram 的上游依赖直到 after make安装 已运行。
换句话说,我希望构建脚本首先下载并安装依赖项,然后尝试查找下游构建步骤所需的库的位置。这可能与 cmake 相关还是我应该以其他方式实现这个目标?
【问题讨论】: