diff options
author | Beeble <beeble@users.noreply.github.com> | 2017-04-04 19:13:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-04-05 17:44:03 (GMT) |
commit | 227de0b95d6fd12e47da502ce34e8aea6d57cc43 (patch) | |
tree | c08c1f0ac43c53706519b8e51cd3905f1b18a2de /Tests/RunCMake/include_external_msproject/check_utils.cmake | |
parent | 4cd815f0b314197ddabea94017e0ce8b15836c17 (diff) | |
download | CMake-227de0b95d6fd12e47da502ce34e8aea6d57cc43.zip CMake-227de0b95d6fd12e47da502ce34e8aea6d57cc43.tar.gz CMake-227de0b95d6fd12e47da502ce34e8aea6d57cc43.tar.bz2 |
include_external_msproject: Honor MAP_IMPORTED_CONFIG_<CONFIG>
This allows projects added via `include_external_msproject` to compile
the preferred configuration despite different naming conventions.
Diffstat (limited to 'Tests/RunCMake/include_external_msproject/check_utils.cmake')
-rw-r--r-- | Tests/RunCMake/include_external_msproject/check_utils.cmake | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/Tests/RunCMake/include_external_msproject/check_utils.cmake b/Tests/RunCMake/include_external_msproject/check_utils.cmake index 5dd92f9..e9e9cac 100644 --- a/Tests/RunCMake/include_external_msproject/check_utils.cmake +++ b/Tests/RunCMake/include_external_msproject/check_utils.cmake @@ -71,8 +71,24 @@ function(check_custom_platform TARGET_FILE PROJECT_NAME PLATFORM_NAME RESULT) set(${RESULT} ${IS_FOUND} PARENT_SCOPE) endfunction() +# Search project's build configuration line by project name and target configuration name. +# Returns TRUE if found and FALSE otherwise +function(check_custom_configuration TARGET_FILE PROJECT_NAME SLN_CONFIG DST_CONFIG RESULT) + set(${RESULT} "FALSE" PARENT_SCOPE) + # extract project guid + parse_project_section(${TARGET_FILE} ${PROJECT_NAME}) + if(NOT IS_FOUND) + return() + endif() + + set(REG_EXP "^(\t)*\\{${FOUND_GUID}\\}\\.${SLN_CONFIG}[^ ]*\\.ActiveCfg = ${DST_CONFIG}\\|.*$") + check_line_exists(${TARGET_FILE} REG_EXP) + + set(${RESULT} ${IS_FOUND} PARENT_SCOPE) +endfunction() + # RunCMake test check helper -function(check_project test name guid type platform) +function(check_project test name guid type platform imported_release_config_name) set(sln "${RunCMake_TEST_BINARY_DIR}/${test}.sln") set(sep "") set(failed "") @@ -88,6 +104,9 @@ function(check_project test name guid type platform) set(platform "Win32") endif() endif() + if(NOT imported_release_config_name) + set(imported_release_config_name "Release") + endif() if(guid) check_project_guid("${sln}" "${name}" "${guid}" passed_guid) if(NOT passed_guid) @@ -107,5 +126,11 @@ function(check_project test name guid type platform) string(APPEND failed "${sep}${name} solution has no project with expected PLATFORM=${platform}") set(sep "\n") endif() + check_custom_configuration("${sln}" "${name}" "Release" "${imported_release_config_name}" passed_configuration) + if(NOT passed_configuration) + string(APPEND failed "${sep}${name} solution has no project with expected CONFIG=${imported_release_config_name}") + set(sep "\n") + endif() + set(RunCMake_TEST_FAILED "${failed}" PARENT_SCOPE) endfunction() |