【问题标题】:How to simply build an external project with cmake externalproject_add如何使用 cmake externalproject_add 简单地构建一个外部项目
【发布时间】:2022-07-06 00:56:19
【问题描述】:

我有一个想要集成到现有 cmake 构建中的库。所有 cmake 所要做的就是进入该目录,运行“make”,按照我的布局执行安装步骤(可能只是复制到包含的二进制目录),然后继续做它的事情。 Cmake 继续尝试创建目录并猜测路径名。

基础 CMakeLists.txt 中的命令是:

ExternalProject_Add(mylib BINARY_DIR ${CMAKE_SOURCE_DIR}/mylib/sdk BUILD_COMMAND make)

但是,当我尝试构建时,cmake 抱怨:

    CMake Error at /usr/share/cmake-3.16/Modules/ExternalProject.cmake:2630 (message):
  No download info given for 'mylib' and its source directory:

   /home/brydon/build/myTarget/existingLib/mylib-prefix/src/mylib

  is not an existing non-empty directory.  Please specify one of:

   * SOURCE_DIR with an existing non-empty directory
   * DOWNLOAD_COMMAND
   * URL
   * GIT_REPOSITORY
   * SVN_REPOSITORY
   * HG_REPOSITORY
   * CVS_REPOSITORY and CVS_MODULE
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/ExternalProject.cmake:3236 (_ep_add_download_command)
  CMakeLists.txt:83 (ExternalProject_Add)

为什么它会跳到所有这些目录?我不明白 CMake 在这里试图做什么 - 它需要做的就是在我明确指定为构建目录的目录中运行 make

我曾尝试使用 SOURCE_DIR,但随后我收到一条错误消息,指出该目录中没有 CMakeLists.txt,这又不是我想要的。

如何让 cmake 非常简单地使用现有的 makefile,仅此而已?

【问题讨论】:

  • BUILD_DIR 不正确,或者至少在我搜索 BUILD_DIR 的文档时我没有得到任何点击:https://cmake.org/cmake/help/latest/module/ExternalProject.html 我想你想要BINARY_DIR 而不是BUILD_DIR
  • BUILD_DIR 不是ExternalProject_Add 的参数名称
  • 我的错误 - 我在尝试将其放回原处时打错了字。我已经用正确的行编辑了问题并产生了错误
  • 您需要设置SOURCE_DIR并将CONFIGURE_COMMAND设置为空字符串(根据文档)
  • @AlanBirtles 做到了。我试图弄清楚如何在不让 cmake 尝试进行配置的情况下提供源目录。空的CONFIGURE_COMMAND 是这里的诀窍。哪个文档指定了这一点?

标签: c++ cmake


【解决方案1】:

如果您不下载代码,则需要将 SOURCE_DIR 设置为包含您的库的现有目录。

如果您不使用 cmake,则需要将 CONFIGURE_COMMAND 设置为空字符串,如 ExternalProject_Add 文档中所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2013-02-16
    • 2020-06-09
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多