2

プロジェクトで zlib を自動的にビルドするための cmake スクリプトを作成したいと考えています。

追加した

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 に答える