summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/command/include_external_msproject.rst4
-rw-r--r--Help/dev/review.rst4
-rw-r--r--Help/release/dev/include_external_msproject-map-config.rst6
-rw-r--r--Modules/FindBoost.cmake2
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/bindexplib.h1
-rw-r--r--Source/cmExtraCodeLiteGenerator.cxx101
-rw-r--r--Source/cmExtraCodeLiteGenerator.h4
-rw-r--r--Source/cmGlobalVisualStudio71Generator.cxx15
-rw-r--r--Source/cmGlobalVisualStudio71Generator.h4
-rw-r--r--Source/cmGlobalVisualStudio7Generator.cxx10
-rw-r--r--Source/cmGlobalVisualStudio7Generator.h4
-rw-r--r--Source/cmGlobalVisualStudio8Generator.cxx15
-rw-r--r--Source/cmGlobalVisualStudio8Generator.h4
-rw-r--r--Tests/RunCMake/include_external_msproject/CustomConfig-check.cmake1
-rw-r--r--Tests/RunCMake/include_external_msproject/CustomConfig.cmake3
-rw-r--r--Tests/RunCMake/include_external_msproject/CustomGuid-check.cmake2
-rw-r--r--Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check.cmake2
-rw-r--r--Tests/RunCMake/include_external_msproject/CustomTypePlatform-check.cmake2
-rw-r--r--Tests/RunCMake/include_external_msproject/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/include_external_msproject/check_utils.cmake27
21 files changed, 170 insertions, 44 deletions
diff --git a/Help/command/include_external_msproject.rst b/Help/command/include_external_msproject.rst
index 18a2b50..335282a 100644
--- a/Help/command/include_external_msproject.rst
+++ b/Help/command/include_external_msproject.rst
@@ -20,3 +20,7 @@ command to make things depend on the external project.
specify the type of project, id (GUID) of the project and the name of
the target platform. This is useful for projects requiring values
other than the default (e.g. WIX projects).
+
+If the imported project has different configuration names than the
+current project, set the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>`
+target property to specify the mapping.
diff --git a/Help/dev/review.rst b/Help/dev/review.rst
index 3004a14..3db1f40 100644
--- a/Help/dev/review.rst
+++ b/Help/dev/review.rst
@@ -106,6 +106,10 @@ Human Review
Anyone is welcome to review merge requests and make comments!
+Please make comments directly on the MR page Discussion and Changes tabs
+and not on individual commits. Comments on a commit may disappear
+from the MR page if the commit is rewritten in response.
+
Reviewers may add comments providing feedback or to acknowledge their
approval. Lines of specific forms will be extracted during the `merge`_
step and included as trailing lines of the generated merge commit message.
diff --git a/Help/release/dev/include_external_msproject-map-config.rst b/Help/release/dev/include_external_msproject-map-config.rst
new file mode 100644
index 0000000..d5f7a7f
--- /dev/null
+++ b/Help/release/dev/include_external_msproject-map-config.rst
@@ -0,0 +1,6 @@
+include_external_msproject-map-config
+-------------------------------------
+
+* The :command:`include_external_msproject` command learned to use
+ the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property
+ to map current configurations to the external configurations.
diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake
index 1d75720..c3cf341 100644
--- a/Modules/FindBoost.cmake
+++ b/Modules/FindBoost.cmake
@@ -1544,7 +1544,7 @@ foreach(COMPONENT ${Boost_FIND_COMPONENTS})
${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}-${Boost_LIB_VERSION}
${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} )
endforeach()
- set(_boost_RELEASE_NAMES
+ list(APPEND _boost_RELEASE_NAMES
${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}-${Boost_LIB_VERSION}
${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT} )
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index ec2d4f8..66cbd7a 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,5 +1,5 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 8)
-set(CMake_VERSION_PATCH 20170405)
+set(CMake_VERSION_PATCH 20170407)
#set(CMake_VERSION_RC 1)
diff --git a/Source/bindexplib.h b/Source/bindexplib.h
index 7f0615f..51fe49d 100644
--- a/Source/bindexplib.h
+++ b/Source/bindexplib.h
@@ -16,6 +16,7 @@ public:
bool AddDefinitionFile(const char* filename);
bool AddObjectFile(const char* filename);
void WriteFile(FILE* file);
+
private:
std::set<std::string> Symbols;
std::set<std::string> DataSymbols;
diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx
index fd7da18..856d42e 100644
--- a/Source/cmExtraCodeLiteGenerator.cxx
+++ b/Source/cmExtraCodeLiteGenerator.cxx
@@ -349,6 +349,87 @@ void cmExtraCodeLiteGenerator::FindMatchingHeaderfiles(
}
}
+void cmExtraCodeLiteGenerator::CreateFoldersAndFiles(
+ std::set<std::string>& cFiles, cmXMLWriter& xml,
+ const std::string& projectPath)
+{
+ std::vector<std::string> tmp_path;
+ std::vector<std::string> components;
+ size_t numOfEndEl = 0;
+
+ for (std::set<std::string>::const_iterator it = cFiles.begin();
+ it != cFiles.end(); ++it) {
+ std::string frelapath =
+ cmSystemTools::RelativePath(projectPath.c_str(), it->c_str());
+ cmsys::SystemTools::SplitPath(frelapath, components, false);
+ components.pop_back(); // erase last member -> it is file, not folder
+ components.erase(components.begin()); // erase "root"
+
+ size_t sizeOfSkip = 0;
+
+ for (size_t i = 0; i < components.size(); ++i) {
+ // skip relative path
+ if (components[i] == ".." || components[i] == ".") {
+ sizeOfSkip++;
+ continue;
+ }
+
+ // same folder
+ if (tmp_path.size() > i - sizeOfSkip &&
+ tmp_path[i - sizeOfSkip] == components[i]) {
+ continue;
+ }
+
+ // delete "old" subfolders
+ if (tmp_path.size() > i - sizeOfSkip) {
+ numOfEndEl = tmp_path.size() - i + sizeOfSkip;
+ tmp_path.erase(tmp_path.end() - numOfEndEl, tmp_path.end());
+ for (; numOfEndEl--;) {
+ xml.EndElement();
+ }
+ }
+
+ // add folder
+ xml.StartElement("VirtualDirectory");
+ xml.Attribute("Name", components[i]);
+ tmp_path.push_back(components[i]);
+ }
+
+ // delete "old" subfolders
+ numOfEndEl = tmp_path.size() - components.size() + sizeOfSkip;
+ if (numOfEndEl) {
+ tmp_path.erase(tmp_path.end() - numOfEndEl, tmp_path.end());
+ for (; numOfEndEl--;) {
+ xml.EndElement();
+ }
+ }
+
+ // add file
+ xml.StartElement("File");
+ xml.Attribute("Name", frelapath);
+ xml.EndElement();
+ }
+
+ // end of folders
+ numOfEndEl = tmp_path.size();
+ for (; numOfEndEl--;) {
+ xml.EndElement();
+ }
+}
+
+void cmExtraCodeLiteGenerator::CreateFoldersAndFiles(
+ std::map<std::string, cmSourceFile*>& cFiles, cmXMLWriter& xml,
+ const std::string& projectPath)
+{
+ std::set<std::string> s;
+ for (std::map<std::string, cmSourceFile*>::const_iterator it =
+ cFiles.begin();
+ it != cFiles.end(); ++it) {
+ s.insert(it->first);
+ }
+ this->CreateFoldersAndFiles(s, xml, projectPath);
+}
+
void cmExtraCodeLiteGenerator::CreateProjectSourceEntries(
std::map<std::string, cmSourceFile*>& cFiles,
std::set<std::string>& otherFiles, cmXMLWriter* _xml,
@@ -366,26 +447,12 @@ void cmExtraCodeLiteGenerator::CreateProjectSourceEntries(
// insert all source files in the codelite project
// first the C/C++ implementation files, then all others
- for (std::map<std::string, cmSourceFile*>::const_iterator sit =
- cFiles.begin();
- sit != cFiles.end(); ++sit) {
- xml.StartElement("File");
- std::string fpath(sit->first);
- std::string frelapath =
- cmSystemTools::RelativePath(projectPath.c_str(), sit->first.c_str());
- xml.Attribute("Name", frelapath);
- xml.EndElement();
- }
+ this->CreateFoldersAndFiles(cFiles, xml, projectPath);
xml.EndElement(); // VirtualDirectory
+
xml.StartElement("VirtualDirectory");
xml.Attribute("Name", "include");
- for (std::set<std::string>::const_iterator sit = otherFiles.begin();
- sit != otherFiles.end(); ++sit) {
- xml.StartElement("File");
- xml.Attribute(
- "Name", cmSystemTools::RelativePath(projectPath.c_str(), sit->c_str()));
- xml.EndElement();
- }
+ this->CreateFoldersAndFiles(otherFiles, xml, projectPath);
xml.EndElement(); // VirtualDirectory
// Get the number of CPUs. We use this information for the make -jN
diff --git a/Source/cmExtraCodeLiteGenerator.h b/Source/cmExtraCodeLiteGenerator.h
index 773515d..3263eb6 100644
--- a/Source/cmExtraCodeLiteGenerator.h
+++ b/Source/cmExtraCodeLiteGenerator.h
@@ -50,6 +50,10 @@ protected:
const cmMakefile* mf,
const std::string& projectType,
const std::string& targetName);
+ void CreateFoldersAndFiles(std::set<std::string>& cFiles, cmXMLWriter& xml,
+ const std::string& projectPath);
+ void CreateFoldersAndFiles(std::map<std::string, cmSourceFile*>& cFiles,
+ cmXMLWriter& xml, const std::string& projectPath);
public:
cmExtraCodeLiteGenerator();
diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx
index 55a788f..3f8d381 100644
--- a/Source/cmGlobalVisualStudio71Generator.cxx
+++ b/Source/cmGlobalVisualStudio71Generator.cxx
@@ -249,7 +249,7 @@ void cmGlobalVisualStudio71Generator::WriteExternalProject(
// Write a dsp file into the SLN file, Note, that dependencies from
// executables to the libraries it uses are also done here
void cmGlobalVisualStudio71Generator::WriteProjectConfigurations(
- std::ostream& fout, const std::string& name, cmStateEnums::TargetType,
+ std::ostream& fout, const std::string& name, cmGeneratorTarget const& target,
std::vector<std::string> const& configs,
const std::set<std::string>& configsPartOfDefaultBuild,
std::string const& platformMapping)
@@ -259,13 +259,18 @@ void cmGlobalVisualStudio71Generator::WriteProjectConfigurations(
std::string guid = this->GetGUID(name);
for (std::vector<std::string>::const_iterator i = configs.begin();
i != configs.end(); ++i) {
- fout << "\t\t{" << guid << "}." << *i << ".ActiveCfg = " << *i << "|"
- << platformName << std::endl;
+ const char* dstConfig = target.GetProperty("MAP_IMPORTED_CONFIG_" +
+ cmSystemTools::UpperCase(*i));
+ if (dstConfig == CM_NULLPTR) {
+ dstConfig = i->c_str();
+ }
+ fout << "\t\t{" << guid << "}." << *i << ".ActiveCfg = " << dstConfig
+ << "|" << platformName << std::endl;
std::set<std::string>::const_iterator ci =
configsPartOfDefaultBuild.find(*i);
if (!(ci == configsPartOfDefaultBuild.end())) {
- fout << "\t\t{" << guid << "}." << *i << ".Build.0 = " << *i << "|"
- << platformName << std::endl;
+ fout << "\t\t{" << guid << "}." << *i << ".Build.0 = " << dstConfig
+ << "|" << platformName << std::endl;
}
}
}
diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h
index 9953047..c65a84a 100644
--- a/Source/cmGlobalVisualStudio71Generator.h
+++ b/Source/cmGlobalVisualStudio71Generator.h
@@ -56,8 +56,8 @@ protected:
const char* path,
cmGeneratorTarget const* t);
virtual void WriteProjectConfigurations(
- std::ostream& fout, const std::string& name, cmStateEnums::TargetType type,
- std::vector<std::string> const& configs,
+ std::ostream& fout, const std::string& name,
+ cmGeneratorTarget const& target, std::vector<std::string> const& configs,
const std::set<std::string>& configsPartOfDefaultBuild,
const std::string& platformMapping = "");
virtual void WriteExternalProject(std::ostream& fout,
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index e7fb203..2d0abf9 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -356,16 +356,16 @@ void cmGlobalVisualStudio7Generator::WriteTargetConfigurations(
if (expath) {
std::set<std::string> allConfigurations(configs.begin(), configs.end());
const char* mapping = target->GetProperty("VS_PLATFORM_MAPPING");
- this->WriteProjectConfigurations(
- fout, target->GetName().c_str(), target->GetType(), configs,
- allConfigurations, mapping ? mapping : "");
+ this->WriteProjectConfigurations(fout, target->GetName().c_str(),
+ *target, configs, allConfigurations,
+ mapping ? mapping : "");
} else {
const std::set<std::string>& configsPartOfDefaultBuild =
this->IsPartOfDefaultBuild(configs, projectTargets, target);
const char* vcprojName = target->GetProperty("GENERATOR_FILE_NAME");
if (vcprojName) {
- this->WriteProjectConfigurations(fout, vcprojName, target->GetType(),
- configs, configsPartOfDefaultBuild);
+ this->WriteProjectConfigurations(fout, vcprojName, *target, configs,
+ configsPartOfDefaultBuild);
}
}
}
diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h
index 1f96cc6..32a8d60 100644
--- a/Source/cmGlobalVisualStudio7Generator.h
+++ b/Source/cmGlobalVisualStudio7Generator.h
@@ -121,8 +121,8 @@ protected:
const char* path,
cmGeneratorTarget const* t) = 0;
virtual void WriteProjectConfigurations(
- std::ostream& fout, const std::string& name, cmStateEnums::TargetType type,
- std::vector<std::string> const& configs,
+ std::ostream& fout, const std::string& name,
+ cmGeneratorTarget const& target, std::vector<std::string> const& configs,
const std::set<std::string>& configsPartOfDefaultBuild,
const std::string& platformMapping = "") = 0;
virtual void WriteSLNGlobalSections(std::ostream& fout,
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx
index 8353a3f..634db7f 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -353,7 +353,7 @@ void cmGlobalVisualStudio8Generator::WriteSolutionConfigurations(
}
void cmGlobalVisualStudio8Generator::WriteProjectConfigurations(
- std::ostream& fout, const std::string& name, cmStateEnums::TargetType type,
+ std::ostream& fout, const std::string& name, cmGeneratorTarget const& target,
std::vector<std::string> const& configs,
const std::set<std::string>& configsPartOfDefaultBuild,
std::string const& platformMapping)
@@ -361,8 +361,13 @@ void cmGlobalVisualStudio8Generator::WriteProjectConfigurations(
std::string guid = this->GetGUID(name);
for (std::vector<std::string>::const_iterator i = configs.begin();
i != configs.end(); ++i) {
+ const char* dstConfig = target.GetProperty("MAP_IMPORTED_CONFIG_" +
+ cmSystemTools::UpperCase(*i));
+ if (dstConfig == CM_NULLPTR) {
+ dstConfig = i->c_str();
+ }
fout << "\t\t{" << guid << "}." << *i << "|" << this->GetPlatformName()
- << ".ActiveCfg = " << *i << "|"
+ << ".ActiveCfg = " << dstConfig << "|"
<< (!platformMapping.empty() ? platformMapping
: this->GetPlatformName())
<< "\n";
@@ -370,14 +375,14 @@ void cmGlobalVisualStudio8Generator::WriteProjectConfigurations(
configsPartOfDefaultBuild.find(*i);
if (!(ci == configsPartOfDefaultBuild.end())) {
fout << "\t\t{" << guid << "}." << *i << "|" << this->GetPlatformName()
- << ".Build.0 = " << *i << "|"
+ << ".Build.0 = " << dstConfig << "|"
<< (!platformMapping.empty() ? platformMapping
: this->GetPlatformName())
<< "\n";
}
- if (this->NeedsDeploy(type)) {
+ if (this->NeedsDeploy(target.GetType())) {
fout << "\t\t{" << guid << "}." << *i << "|" << this->GetPlatformName()
- << ".Deploy.0 = " << *i << "|"
+ << ".Deploy.0 = " << dstConfig << "|"
<< (!platformMapping.empty() ? platformMapping
: this->GetPlatformName())
<< "\n";
diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h
index 53feb47..03fa077 100644
--- a/Source/cmGlobalVisualStudio8Generator.h
+++ b/Source/cmGlobalVisualStudio8Generator.h
@@ -82,8 +82,8 @@ protected:
virtual void WriteSolutionConfigurations(
std::ostream& fout, std::vector<std::string> const& configs);
virtual void WriteProjectConfigurations(
- std::ostream& fout, const std::string& name, cmStateEnums::TargetType type,
- std::vector<std::string> const& configs,
+ std::ostream& fout, const std::string& name,
+ cmGeneratorTarget const& target, std::vector<std::string> const& configs,
const std::set<std::string>& configsPartOfDefaultBuild,
const std::string& platformMapping = "");
virtual bool ComputeTargetDepends();
diff --git a/Tests/RunCMake/include_external_msproject/CustomConfig-check.cmake b/Tests/RunCMake/include_external_msproject/CustomConfig-check.cmake
new file mode 100644
index 0000000..1a940b8
--- /dev/null
+++ b/Tests/RunCMake/include_external_msproject/CustomConfig-check.cmake
@@ -0,0 +1 @@
+check_project(CustomConfig external "aaa-bbb-ccc-000" "" "" "Custom - Release")
diff --git a/Tests/RunCMake/include_external_msproject/CustomConfig.cmake b/Tests/RunCMake/include_external_msproject/CustomConfig.cmake
new file mode 100644
index 0000000..1f935cd
--- /dev/null
+++ b/Tests/RunCMake/include_external_msproject/CustomConfig.cmake
@@ -0,0 +1,3 @@
+include_external_msproject(external external.project
+ GUID aaa-bbb-ccc-000)
+set_target_properties(external PROPERTIES MAP_IMPORTED_CONFIG_RELEASE "Custom - Release")
diff --git a/Tests/RunCMake/include_external_msproject/CustomGuid-check.cmake b/Tests/RunCMake/include_external_msproject/CustomGuid-check.cmake
index 68dec4c..3747934 100644
--- a/Tests/RunCMake/include_external_msproject/CustomGuid-check.cmake
+++ b/Tests/RunCMake/include_external_msproject/CustomGuid-check.cmake
@@ -1 +1 @@
-check_project(CustomGuid external "aaa-bbb-ccc-000" "" "")
+check_project(CustomGuid external "aaa-bbb-ccc-000" "" "" "")
diff --git a/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check.cmake b/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check.cmake
index 614712e..0b2ac1d 100644
--- a/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check.cmake
+++ b/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check.cmake
@@ -1 +1 @@
-check_project(CustomGuidTypePlatform external "aaa-bbb-ccc-111" "aaa-bbb-ccc-ddd-eee" "Custom Platform")
+check_project(CustomGuidTypePlatform external "aaa-bbb-ccc-111" "aaa-bbb-ccc-ddd-eee" "Custom Platform" "")
diff --git a/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check.cmake b/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check.cmake
index 054eeb0..c431b03 100644
--- a/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check.cmake
+++ b/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check.cmake
@@ -1 +1 @@
-check_project(CustomTypePlatform external "" "aaa-bbb-ccc-ddd-eee" "Custom Platform")
+check_project(CustomTypePlatform external "" "aaa-bbb-ccc-ddd-eee" "Custom Platform" "")
diff --git a/Tests/RunCMake/include_external_msproject/RunCMakeTest.cmake b/Tests/RunCMake/include_external_msproject/RunCMakeTest.cmake
index 90710f9..47dac34 100644
--- a/Tests/RunCMake/include_external_msproject/RunCMakeTest.cmake
+++ b/Tests/RunCMake/include_external_msproject/RunCMakeTest.cmake
@@ -4,3 +4,4 @@ include(${CMAKE_CURRENT_LIST_DIR}/check_utils.cmake)
run_cmake(CustomGuid)
run_cmake(CustomTypePlatform)
run_cmake(CustomGuidTypePlatform)
+run_cmake(CustomConfig)
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()