2011-11-15 11 views
5

Estoy intentando cruzar compilar bzip2 en Linux utilizando el comando ExternalProject_Add(...) de CMake.Pase el parámetro con espacios a CMake ExternalProject_Add BUILD_COMMAND

Sin embargo, para realizar una compilación cruzada de libbzip, debe modificar algunas de las macros Makefile para ejecutar la compilación. Aquí está mi cruz actual compilar variables:

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) 

Esta variable se utiliza para el comando de generación

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

errores CRealice porque está tratando de pasar O2, -g, etc., para make, que por supuesto no funciona, pero cuando intento agregar comillas alrededor de la variable CFLAGS dice

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

¿es posible configurar una macro Makefile con espacios en usando CMake's BUILD_COMMAND? ¡Gracias!

Respuesta

6

lo descubrió ... que necesitaba para dividir la cadena entre comillas en su propia variable como esto

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

Esto funcionó!

+4

Una línea "CFLAGS = -Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC}/include" con comillas dobles alrededor de todo también sería equivalente a la construcción que llegó a ... – DLRdave

+0

¡Es bueno saberlo! CMake es increíble =) – mevatron

Cuestiones relacionadas