2011-11-15 2 views
5

CMake의 ExternalProject_Add(...) 명령을 사용하여 Linux에서 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' 

이 가능에 공백이있는 메이크 매크로를 설정하는 것입니다 말한다 그것은 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

인라인 또한 당신이 알고 좋은 – DLRdave

+0

...에 도착 구조에 해당 될 모든 일 큰 따옴표로 "CFLAGS = -Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC은}/포함"! CMake는 최고입니다 =) – mevatron

관련 문제