Установка переменных среды в контекст ExternalProject_Add
У меня есть файл CMakeLists.txt, в котором мне нужно создать несколько внешних проектов. Я использую функцию ExternalProject_Add CMake.
Мне нужно установить переменную среды в одном из модулей проекта ExternalProject_Add. Это необходимо проекту для выполнения сборки.
Я пробовал использовать параметр env ${CMAKE_COMMAND} -E, но это не сработало:
CONFIGURE_COMMAND
${CMAKE_COMMAND} -E env ANDROID_SDK_ROOT="/home/subbu/Android/Sdk"
${CMAKE_COMMAND} -E env ANDROID_API_VERSION="android-22"
<SOURCE_DIR>/configure
-prefix <INSTALL_DIR>
-debug
Я не могу найти примеры в Интернете.
Пожалуйста, порекомендуйте.
Заранее благодарны за Вашу помощь.
Суббу
1 ответ
Я делал то же самое для msgpack, и мне удалось заставить его работать, выполнив следующие действия:
set (MsgpackBundle msgpack-1.4.1.tar.gz)
ExternalProject_Add(MsgpackBuilder
URL ${CMAKE_CURRENT_SOURCE_DIR}/${MsgpackBundle}
URL_MD5 ${MsgpackBundleMd5}
CONFIGURE_COMMAND
${CMAKE_COMMAND} -E CFLAGS=${MsgpackCflags}
${CMAKE_COMMAND} -E env CXXFLAGS=${MsgpackCflags}
${CMAKE_COMMAND} -E env LDFLAGS=${MsgpackLdflags}
./configure
--prefix=${DependenciesInstallDir}
--host=${MsgpackHost}
--disable-shared
BUILD_IN_SOURCE true
BUILD_COMMAND
make V=1
INSTALL_COMMAND
make install)
MsgpackCflags
,
MsgpackLdflags
предварительно вычисляются в зависимости от целевой системы.
MsgpackHost
используется цепочкой инструментов кросс-компиляции (x86_64-linux-gnu для сборки хоста), ${DependenciesInstallDir} также является предварительно вычисленным путем, который различается для разных кортежей os / architecture / build-configuration (отладка, выпуск). в
MsgpackbundleMd5
это результат
md5sum msgpack-1.4.1.tar.gz
.