[Cmake-commits] CMake branch, next, updated. v3.5.0-rc1-45-g7885d80

Brad King brad.king at kitware.com
Fri Feb 5 14:43:27 EST 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  7885d80b0f36dc8a031d36277d3d8b35a1776a1b (commit)
       via  1b9d15c1e7adff5170f10d488483e1dc4e99d507 (commit)
      from  b3df88b4bb4c77291040e27ece6d384e3e58b55c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7885d80b0f36dc8a031d36277d3d8b35a1776a1b
commit 7885d80b0f36dc8a031d36277d3d8b35a1776a1b
Merge: b3df88b 1b9d15c
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Feb 5 14:43:27 2016 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Feb 5 14:43:27 2016 -0500

    Merge topic 'ExternalProject-build-config-compat' into next
    
    1b9d15c1 ExternalProject: Be compatible with projects setting CMAKE_CFG_INTDIR


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1b9d15c1e7adff5170f10d488483e1dc4e99d507
commit 1b9d15c1e7adff5170f10d488483e1dc4e99d507
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Feb 5 14:18:01 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Feb 5 14:43:16 2016 -0500

    ExternalProject: Be compatible with projects setting CMAKE_CFG_INTDIR
    
    Since commit v3.5.0-rc1~32^2~1 (ExternalProject: Simplify `cmake
    --build` configuration passing, 2016-01-19) we use the `$<CONFIG>`
    generator expression to generate the `cmake --build . --config <config>`
    value for the default BUILD_COMMAND instead of the CMAKE_CFG_INTDIR
    placeholder value provided by multi-config generators.  However, some
    projects have been abusing the old implementation detail by setting
    CMAKE_CFG_INTDIR themselves to get a specific configuration.  Those
    projects should be updated to set their own BUILD_COMMAND to get
    non-default behavior.  Meanwhile we can be compatible with their
    existing releases by detecting when CMAKE_CFG_INTDIR is not a
    generator-provided placeholder and using its value instead.

diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 7070dc4..249658d 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()

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list