2016-12-12 13 views
1

私のプロジェクトでzlibを自動的に構築するためのcmakeスクリプトを作成したいと思います。externalproject_addでコマンド引数を設定する方法

私は

externalproject_add(zlib 
    PREFIX . 
    # download step 
    GIT_REPOSITORY [email protected]: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"' 

を。

私は多くのトリックを試みましたが、私はコマンドの仕事を得ることができません。何か案が?

+0

は "多くのtricks_を_tried" - これらそのうち? –

答えて

0

二重引用符は、文字列の分割を防止します。私はまた、別の変数に少なくとも${ARCH_PARAMS}パラメータを分離、そう、あなたがこのようなものがあるだろうと思います:

「/ tmpに/ so_test:だから

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

を、それがつもりこのとして渡されています/構築/ zlibの/ zlibの/のconfigure」 '--archs =' - それはコンパイルエラーに文句保つため、アーチx64_86 '' '--static' 側のノートで

は、zlib configが、少し怪しい縫い目レポート:

$ ./configureを--static --archs = " - アーチx86_64版"

のgccを確認しています...

コンパイラエラー報告が./configureをのためにあまりにも過酷である(おそらく、-Werrorを削除)。

** ./configure aborting。

関連質問:

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

+0

実際には引数全体を引用するだけで十分です: '' --archs = -arch xxx "'。 cmakeは引用を行います。それはかなりうまくいく。 – davidshen84

+0

@ davidshen84 mhm。使用しているCMakeのバージョンを明確にしてください。私のマシンではそうではないからです。 CMakeのメーリングリストには、自動引用や古いバージョンとの互換性に関するいくつかの変更があったと思います。 – Kamiccolo

+0

私は '3.6.1'を使用しています。しかし、私はそれが新しいとは思わない。 ircチャンネルに参加することができます。私はそのトリックをそこで学んだ。 – davidshen84

関連する問題