CMake ExternalProject_Add使用自动设置变量

时间:2018-09-05 08:43:10

标签: cmake coin-or-clp

根据documentationExternalProject_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>

在下面的示例中,我想使用自定义CONFIGURE_COMMAND将COIN-OR-CLP添加为外部项目,因为CLP使用自动工具。这行得通。

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 :(得分:1)

您引用的所有目录都可以用ExternalProject_Add符号在<...> COMMAND中使用:

CONFIGURE_COMMAND <SOURCE_DIR>/configure

由于某些原因,此功能在ExternalProject_Add_Step函数说明的末尾而不是在函数ExternalProject_Add中描述。