2011-11-15 10 views
5

私はLinuxでCMakeのExternalProject_Add(...)コマンドを利用してbzip2をクロスコンパイルしようとしています。スペースを持つパラメータをCMakeに渡すExternalProject_Add BUILD_COMMAND

しかし、libbzipをクロスコンパイルするには、ビルドを実行するためにいくつかのMakefileマクロを変更する必要があります。ここに私の現在のクロスが変数にコンパイルされます。

set(bzlib_CROSS CC=${CROSS_PREFIX}gcc AR=${CROSS_PREFIX}ar RANLIB=${CROSS_PREFIX}ranlib LDFLAGS=-L${bzlib_MINGW_SRC}/lib CFLAGS=-Wall -Winline -O2 -g -I${bzlib_MINGW_SRC}/include) 

この変数は、ビルドコマンドのために使用されていることがmakeになど、-g、-O2を渡そうとしている

set(bzlib_BUILD make ${bzlib_CROSS} PREFIX=${DEPENDENCY_DIR}) 

CMakeのエラーので、もちろん、これは動作しませんが、私はCFLAGS変数の前後に引用符を追加しようとすると、それは

cc1: error: unrecognized command line option '-Wall -Winline -O2 -g -I/long/path/here/include' 

を言うことは、それは内のスペースでMakefileのマクロを設定することが可能ですそれはCMakeのBUILD_COMMANDを使っていますか?ありがとう!

答えて

6

は、私はこれが働いていたこの

set(bzlib_CFLAGS "-Wall -Winline -O2 -g -I${bzlib_MINGW_SRC}/include") 
set(bzlib_CROSS CC=${CROSS_PREFIX}gcc AR=${CROSS_PREFIX}ar RANLIB=${CROSS_PREFIX}ranlib LDFLAGS=-L${bzlib_MINGW_SRC}/lib CFLAGS=${bzlib_CFLAGS}) 

のような独自の変数に引用符で囲まれた文字列を分割するために必要な...それを考え出しました!

+4

全体を二重引用符で囲んだ "CFLAGS = -Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC}/include"は、あなたが到着したコンストラクトと同等です。 – DLRdave

+0

お役立ち情報CMakeは素晴らしいです=) – mevatron

関連する問題