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.
This commit is contained in:
parent
c8ddb6813b
commit
1b9e61f214
|
@ -408,6 +408,30 @@ cmGlobalVisualStudioGenerator::GetUtilityForTarget(cmTarget& target,
|
|||
return name;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
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>
|
||||
|
||||
|
|
|
@ -85,6 +85,9 @@ protected:
|
|||
OrderedTargetDependSet(cmGlobalGenerator::TargetDependSet const&);
|
||||
};
|
||||
|
||||
virtual void GetTargetSets(TargetDependSet& projectTargets,
|
||||
TargetDependSet& originalTargets,
|
||||
cmLocalGenerator* root, GeneratorVector const&);
|
||||
private:
|
||||
void FixUtilityDependsForTarget(cmTarget& target);
|
||||
void CreateUtilityDependTarget(cmTarget& target);
|
||||
|
|
Loading…
Reference in New Issue