2

我想创建一个 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"'

我认为没有正确引用。

我尝试了很多技巧,但我无法让命令工作。任何想法?

4

1 回答 1

-2

双引号可防止字符串被拆分。我也至少将${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"

正在检查 gcc...

编译器错误报告对于 ./configure 来说太苛刻了(可能删除 -Werror)。

** ./配置中止。

相关问题:

cmake:如何在自定义命令中包含文字双引号?

于 2016-12-12T13:43:56.463 回答