CMake ExternalProject_Add использует автоматически установленные переменные

Согласно документации, 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 ответ

Решение

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

CONFIGURE_COMMAND <SOURCE_DIR>/configure

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

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