summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalVisualStudioGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-10-01 14:27:02 (GMT)
committerBrad King <brad.king@kitware.com>2009-10-01 14:27:02 (GMT)
commit1b9e61f214b12f9a20a975d9bfe9c310d65082d2 (patch)
tree961aa57b001b95fea9478142de9560e6a641d6e6 /Source/cmGlobalVisualStudioGenerator.cxx
parentc8ddb6813b5888fa638ed312fca6473028c61aa4 (diff)
downloadCMake-1b9e61f214b12f9a20a975d9bfe9c310d65082d2.zip
CMake-1b9e61f214b12f9a20a975d9bfe9c310d65082d2.tar.gz
CMake-1b9e61f214b12f9a20a975d9bfe9c310d65082d2.tar.bz2
Add alternative _UTILITY targets to all solutions
In VS 6, 7, and 7.1 solutions we implement add_dependencies(myexe mylib) # depend without linking by creating an intermediate mylib_UTILITY target with dependencies myexe -> mylib_UTILITY -> mylib to avoid linking myexe to mylib. Previously these extra targets were only added to the solution files in an ancestor directory of that defining mylib. For example, in the project: # CMakeLists.txt project(TOP) add_subdirectory(A) add_subdirectory(b) # A/CMakeLists.txt add_library(mylib ...) # B/CMakeLists.txt project(B) add_executable(myexe ...) add_dependencies(myexe mylib) the solution for TOP would have mylib_UTILITY but the solution for B would not even though it pulls in mylib through the dependency. This commit fixes solutions generated in other directories so that any solution that has mylib will get mylib_UTILITY also. See issue #9568.
Diffstat (limited to 'Source/cmGlobalVisualStudioGenerator.cxx')
-rw-r--r--Source/cmGlobalVisualStudioGenerator.cxx24
1 files changed, 24 insertions, 0 deletions
diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx
index bc67151..85b4a71 100644
--- a/Source/cmGlobalVisualStudioGenerator.cxx
+++ b/Source/cmGlobalVisualStudioGenerator.cxx
@@ -409,6 +409,30 @@ cmGlobalVisualStudioGenerator::GetUtilityForTarget(cmTarget& target,
}
//----------------------------------------------------------------------------
+void cmGlobalVisualStudioGenerator::GetTargetSets(
+ TargetDependSet& projectTargets, TargetDependSet& originalTargets,
+ cmLocalGenerator* root, GeneratorVector const& generators
+ )
+{
+ this->cmGlobalGenerator::GetTargetSets(projectTargets, originalTargets,
+ root, generators);
+
+ // Add alternative dependency targets created by FixUtilityDepends.
+ for(TargetDependSet::iterator ti = projectTargets.begin();
+ ti != projectTargets.end(); ++ti)
+ {
+ cmTarget* tgt = *ti;
+ if(const char* altName = tgt->GetProperty("ALTERNATIVE_DEPENDENCY_NAME"))
+ {
+ if(cmTarget* alt = tgt->GetMakefile()->FindTarget(altName))
+ {
+ projectTargets.insert(alt);
+ }
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
#include <windows.h>
//----------------------------------------------------------------------------