CMake ExternalProject_Add использует автоматически установленные переменные - PullRequest
0 голосов
/ 05 сентября 2018

В соответствии с документацией , ExternalProject_Add сама устанавливает неустановленные переменные каталога.

Если какой-либо из перечисленных выше параметров ..._ DIR не указан, их значения по умолчанию рассчитываются следующим образом. Если задана опция PREFIX или установлено свойство каталога EP_PREFIX, то внешний проект создается и устанавливается с указанным префиксом:

TMP_DIR      = <prefix>/tmp
STAMP_DIR    = <prefix>/src/<name>-stamp
DOWNLOAD_DIR = <prefix>/src
SOURCE_DIR   = <prefix>/src/<name>
BINARY_DIR   = <prefix>/src/<name>-build
INSTALL_DIR  = <prefix>

В следующем примере я хочу добавить COIN-OR-CLP в качестве внешнего проекта с пользовательским CONFIGURE_COMMAND, поскольку CLP использует Autotools. Это работает.

include(ExternalProject)
ExternalProject_Add(${EXT_PROJ}
                    PREFIX ${EXT_PROJ}
                    SVN_REPOSITORY https://projects.coin-or.org/svn/Clp/stable/1.16/
                    UPDATE_COMMAND svn cleanup  # Beause otherwise svn will fail on consecutive runs
                    CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${EXT_PROJ}/${EXT_PROJ}/src/${EXT_PROJ}/configure

)

Однако я думаю, что было бы лучше использовать сгенерированные пути, а не передавать их вручную.

Есть ли способ использовать ${SOUCRE_DIR} в ExternalProject_Add без явной его настройки?

1 Ответ

0 голосов
/ 05 сентября 2018

Все каталоги, на которые вы ссылаетесь, могут использоваться в ExternalProject_Add КОМАНДАХ с пометкой <...>:

CONFIGURE_COMMAND <SOURCE_DIR>/configure

По какой-то причине эта функция описана в конце описания функции ExternalProject_Add_Step, а не в функции ExternalProject_Add.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...