Как установить аргумент команды в externalproject_add
Я хочу создать скрипт cmake для автоматической сборки zlib в моем проекте.
я добавил
externalproject_add(zlib
PREFIX .
# download step
GIT_REPOSITORY git@github.com:madler/zlib.git
GIT_TAG v1.2.8
# configure step
SOURCE_DIR zlib
CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/build/zlib/zlib/configure --archs="-arch ${ARCH}" --static
# build step
BUILD_COMMAND make
BUILD_IN_SOURCE 1
# install step
INSTALL_DIR zlib-${ARCH}
INSTALL_COMMAND make install
# logging
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1
)
Но он генерирует команды конфигурации, как это:
'/Users/david/Documents/cmake_projects/build/zlib/zlib/configure' '--archs=' '-arch' 'x86_64"' '--static"'
Который я думаю не правильно цитируется.
Я перепробовал много трюков, но не могу заставить команду работать. Любая идея?
1 ответ
Двойные кавычки предотвращают разбиение строки. Я бы тоже отделил хотя бы ${ARCH_PARAMS}
параметр в отдельную переменную, так что у вас будет что-то вроде этого:
set(ARCH_PARAMS "--archs='-arch ${ARCH}'")
...
...
CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/build/zlib/zlib/configure ${ARCH_PARAMS} --static
Итак, это будет передаваться так:
'/ tmp / so_test / build / zlib / zlib / configure' '--archs =' - arch x64_86 '' '--static'
На примечании стороны, zlib
Конфиг выглядит немного подозрительно, потому что он постоянно жалуется на сообщения об ошибках компилятора:
$./configure --static --archs = "- arch x86_64"
Проверка на gcc...
Отчет об ошибках компилятора слишком резок для./configure (возможно, удалить -Werror).
**./configure aborting.
Актуальные вопросы:
cmake: Как включить буквальную двойную кавычку в пользовательскую команду?