如何将环境变量传递给 ExternalProject_Add CONFIGURE_COMMAND?

Ale*_* A. 5 build-automation build-process autotools cmake

我有一个带有 autotools 项目的第三方库。我想使用 ExternalProject_Add 来构建库。

这可以通过以下方式完成:

ExternalProject_Add(project_lib
   SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib
   CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/configure --prefix=${LIB_OUTPUT}
   BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build
)
Run Code Online (Sandbox Code Playgroud)

现在的问题是我需要将环境变量传递给,configure但我找不到方法来做到这一点。

在控制台中,我会按照以下方式进行:

CPPFLAGS="-fPIC" ./configure --prefix=output

有没有办法将CPPFLAGS="-fPIC"env传递给configurewith ExternalProject_Add/CONFIGURE_COMMAND

Ale*_* A. 5

可以configure通过 cmake( cmake --help)命令模式执行命令来完成:

-E                           = CMake command mode.
Run Code Online (Sandbox Code Playgroud)

因此,configure我们可以使用环境变量通过 cmake 命令模式执行它,而不是直接调用:

ExternalProject_Add(project_lib
   SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib
   CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env CPPFLAGS=-fPIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/configure --prefix=${LIB_OUTPUT}
   BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build
)
Run Code Online (Sandbox Code Playgroud)

[cmake-developers] 使用 ExternalProject_Add 设置环境