2011-11-15 19 views
5

Sto cercando di compilare bzip2 in Linux utilizzando il comando ExternalProject_Add(...) di CMake.Passare il parametro con spazi a CMake ExternalProject_Add BUILD_COMMAND

Tuttavia, per eseguire la compilazione incrociata di libbzip, è necessario modificare alcune macro di Makefile per eseguire la generazione. Qui è la mia croce corrente compilare variabile:

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) 

Questa variabile viene poi utilizzato per il comando build

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

CMake errori perché sta cercando di far passare -O2, -g, ecc per make, che ovviamente non funziona, ma quando provo ad aggiungere virgolette la variabile CFLAGS si dice

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

E 'possibile impostare una macro Makefile con spazi a usando CMake BUILD_COMMAND? Grazie!

risposta

6

capito ... avevo bisogno di dividere la stringa tra virgolette nella propria variabile come questo

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}) 

Questo ha funzionato!

+4

Un "CFLAGS = -Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC}/include" in linea "con doppie virgolette su tutta la faccenda sarebbe anche equivalente al costrutto che è arrivato a ... – DLRdave

+0

Buono a sapersi! CMake è fantastico =) – mevatron

Problemi correlati