Передать параметр с пробелами в CMake ExternalProject_Add BUILD_COMMAND - PullRequest
5 голосов
/ 16 ноября 2011

Я пытаюсь кросс-компилировать bzip2 в Linux, используя команду CMake ExternalProject_Add(...).

Однако для кросс-компиляции 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)

Эта переменная затем используется для команды построения

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

Ошибки CMake, потому что он пытается передать -O2, -g и т. Д. В make, что, конечно, не работает, но когда я пытаюсь добавить кавычки вокруг переменной CFLAGS, он говорит

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

Можно ли установить макрос Makefile с пробелами в нем, используя BUILD_COMMAND в CMake? Спасибо!

1 Ответ

6 голосов
/ 16 ноября 2011

Разобрался ... Мне нужно было разделить строку в кавычках на собственную переменную, подобную этой

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

Это сработало!

...