cmake - 如何在 externalproject_add 中设置命令参数

标签 cmake external-project

我想创建一个 cmake 脚本来在我的项目中自动构建 zlib。

我加了

externalproject_add(zlib
  PREFIX .
  # download step
  GIT_REPOSITORY git@github.com:madler/zlib.git
  GIT_TAG v1.2.8
  # configure step
  SOURCE_DIR zlib
  CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/build/zlib/zlib/configure --archs="-arch ${ARCH}" --static
  # build step
  BUILD_COMMAND make
  BUILD_IN_SOURCE 1
  # install step
  INSTALL_DIR zlib-${ARCH}
  INSTALL_COMMAND make install
  # logging
  LOG_CONFIGURE 1
  LOG_BUILD 1
  LOG_INSTALL 1
  )

但它会生成这样的配置命令:

'/Users/david/Documents/cmake_projects/build/zlib/zlib/configure' '--archs=' '-arch' 'x86_64"' '--static"'

我认为引用不当。

我尝试了很多技巧,但我无法让命令工作。有什么想法吗?

最佳答案

双引号防止字符串被拆分。我还将至少将 ${ARCH_PARAMS} 参数分离到单独的变量中,因此,您会有这样的东西:

set(ARCH_PARAMS "--archs='-arch ${ARCH}'")
...
...
CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/build/zlib/zlib/configure ${ARCH_PARAMS} --static

所以,它会这样通过:

'/tmp/so_test/build/zlib/zlib/configure' '--archs='-arch x64_86'' '--static'

旁注,zlib 配置接缝有点可疑,因为它一直提示编译器错误报告:

$ ./configure --static --archs="-arch x86_64"

Checking for gcc...

Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).

** ./configure aborting.

相关问题:

cmake: How to include literal double-quote in custom command?

关于cmake - 如何在 externalproject_add 中设置命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41099029/

相关文章:

c++ - 嵌套的 cmake 库

c++ - CMake 声明函数对ExternalProject_Add 的依赖

build - 避免额外的 ExternalProject 下载

c++ - 如何在配置主要项目时构建 cmake ExternalProject?

c++ - CMake:GLFW 作为外部项目

c++ - 使用 ExternalProject_Add 的 CMake 链接错误 1

cmake - 如何在 CMAKE/CPACK 项目中惯用地设置版本号?

cmake - 安装问题: Cmake error : include could not find load file: yarpl-exports. cmake

c++ - 使用 CMake 生成 DLL 配置类型

batch-file - 使用 CMake 批量评估 ninja clang-tidy 的返回值