CMake ExternalProject_Add 中的 URL 问题

Posted

技术标签:

【中文标题】CMake ExternalProject_Add 中的 URL 问题【英文标题】:Problem with URL in CMake ExternalProject_Add 【发布时间】:2019-03-23 09:35:33 【问题描述】:

我在 CMake 中执行 ExternalProject_Add 命令时遇到问题。它说:至少一个 URL 条目是路径(在列表中无效)。

我知道当 URL 中有分号时会发生此错误,但我的 URL 中没有分号。

SET (Boost_Bootstrap_Command ./bootstrap.sh)
SET (Boost_b2_Command ./b2)
SET (Boost_URL https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz)
ExternalProject_Add(boost
    URL $Boost_URL
    URL_HASH_SHA256=9a2c2819310839ea373f42d69e733c339b4e9a19deab6bfec448281554aa4dbb
    BUILD_IN_SOURCE 1
    UPDATE_COMMAND ""
    PATCH_COMMAND ""
    CONFIGURE_COMMAND $Boost_Bootstrap_Command
    BUILD_COMMAND $Boost_b2_Command install
    --with-thread
    --without-python
    --without-mpi
    --disable-icu
    --prefix=$CMAKE_BINARY_DIR/INSTALL
    --threading=single,multi
    --link=shared
    --variant=release
    -j8
    INSTALL_COMMAND ""
    INSTALL_DIR $CMAKE_BINARY_DIR/INSTALL
)

有人知道我的网址有什么问题吗?

【问题讨论】:

请尝试将此行:BUILD_IN_SOURCE 1 放在您的 URL $Boost_URL 行和您的 URL_HASH_SHA256 行之间,并告知会发生什么。 @MatthieuBrucher 成功了 :) 谢谢。 【参考方案1】:

正如文档所述,您需要 CMake 的下载位置来构建外部项目。不下载包的时候,位置已经在了,但是如果从url或者git或者别的什么地方问,就得提供DOWNLOAD_DIR

【讨论】:

谢谢。也解决了我的问题。我不明白At least one entry of URL is a path (invalid in a list) 错误消息是如何对应的。为什么是这条消息?

以上是关于CMake ExternalProject_Add 中的 URL 问题的主要内容,如果未能解决你的问题,请参考以下文章

链接到 CMAKE 中的 ExternalProject_add 依赖项

CMake 使 add_library 依赖于 ExternalProject_Add

ExternalProject_Add 使用 pybind11 进行 CMake 项目的智能方法

CMake ExternalProject_Add 中的 URL 问题

cmake:下载easylogging++,直接使用源码

CMake:如何构建外部项目并包含其目标