cmake - 为ExternalProject_Add 设置WORKING_DIRECTORY CONFIGURE_COMMAND

标签 cmake external-project

我正在尝试添加 Automake 项目作为外部项目。 Automake 配置脚本(通常使用 ./configure 运行)包含资源文件的相对路径。当我手动运行configure时找到该文件,因为我的工作目录位于源目录中。但是,当我使用 ExternalProject_Add 运行 configure 时,它找不到资源文件,因为工作目录是 CMAKE_CURRENT_BINARY_DIR

ExternalProject_Add(zlib
        SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
        CONFIGURE_COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/configure
        BUILD_COMMAND make)

如何设置配置步骤的工作目录,以便配置脚本找到所需的文件?

最佳答案

ExternalProject_Add 中,配置步骤是在当前构建目录(BINARY_DIR 选项)的情况下执行的,因此您可以设置此选项:

ExternalProject_Add(...
    BINARY_DIR <dir>
    ...
)

对于源内构建(当构建目录与源目录相同时),BUILD_IN_SOURCE 选项可以用作设置 BINARY_DIR 选项的替代方法:

ExternalProject_Add(...
    BUILD_IN_SOURCE 1
    ...
)

更多信息请参见ExternalProject documentation页。

关于cmake - 为ExternalProject_Add 设置WORKING_DIRECTORY CONFIGURE_COMMAND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49863027/

相关文章:

linux - CMake 是否支持 glibc 功能测试宏

c++ - 将 CMake 变量传递给 ExternalProject_Add

CMake ExternalProject_Add() - 使用自定义的 CMakeLists.txt 构建

cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码

c++ - 基于构建配置的链接库[cmake]

cmake - 如何列出所有 CMake 构建选项及其默认值?

带包装的 CMAKE RPATH

cmake - 多个子项目依赖于同一个库

cmake - 如何让ExternalProject_Add下载库?