summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-02-08 10:35:41 -0500
committerBrad King <brad.king@kitware.com>2016-02-08 10:35:41 -0500
commit52a81d67f1a462143147e2282c8763b5b37060ae (patch)
tree0b6ace305a9cbefdcbe5f816416db04cb599db24
parentcb409699a40826cacc7ba5bc64936aed7ae0a286 (diff)
parent1b9d15c1e7adff5170f10d488483e1dc4e99d507 (diff)
downloadcmake-52a81d67f1a462143147e2282c8763b5b37060ae.tar.gz
Merge branch 'ExternalProject-build-config-compat' into release
-rw-r--r--Modules/ExternalProject.cmake19
1 files changed, 17 insertions, 2 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 7070dc4709..249658d620 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -1231,7 +1231,22 @@ function(_ep_get_build_command name step cmd_var)
endif()
set(args --build ".")
if(CMAKE_CONFIGURATION_TYPES)
- list(APPEND args --config $<CONFIG>)
+ if (CMAKE_CFG_INTDIR AND
+ NOT CMAKE_CFG_INTDIR STREQUAL "." AND
+ NOT CMAKE_CFG_INTDIR MATCHES "\\$")
+ # CMake 3.4 and below used the CMAKE_CFG_INTDIR placeholder value
+ # provided by multi-configuration generators. Some projects were
+ # taking advantage of that undocumented implementation detail to
+ # specify a specific configuration here. They should use
+ # BUILD_COMMAND to change the default command instead, but for
+ # compatibility honor the value.
+ set(config ${CMAKE_CFG_INTDIR})
+ message(AUTHOR_WARNING "CMAKE_CFG_INTDIR should not be set by project code.\n"
+ "To get a non-default build command, use the BUILD_COMMAND option.")
+ else()
+ set(config $<CONFIG>)
+ endif()
+ list(APPEND args --config ${config})
endif()
if(step STREQUAL "INSTALL")
list(APPEND args --target install)
@@ -1241,7 +1256,7 @@ function(_ep_get_build_command name step cmd_var)
string(REGEX REPLACE "^(.*/)cmake([^/]*)$" "\\1ctest\\2" cmd "${cmd}")
set(args "")
if(CMAKE_CONFIGURATION_TYPES)
- list(APPEND args -C $<CONFIG>)
+ list(APPEND args -C ${config})
endif()
endif()
endif()