Установка переменных среды в контекст 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.

Другие вопросы по тегам