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
,