【发布时间】: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是这里的诀窍。哪个文档指定了这一点?