|
|
@@ -231,6 +231,40 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
|
|
|
{
|
|
|
this->AddDSPBuildRule();
|
|
|
}
|
|
|
+
|
|
|
+ // for utility targets need custom command since post build doesn't
|
|
|
+ // do anything (Visual Studio 7 seems to do this correctly without
|
|
|
+ // the hack)
|
|
|
+ if (target.GetType() == cmTarget::UTILITY &&
|
|
|
+ target.GetPostBuildCommands().size())
|
|
|
+ {
|
|
|
+ int count = 1;
|
|
|
+ for (std::vector<cmCustomCommand>::const_iterator cr =
|
|
|
+ target.GetPostBuildCommands().begin();
|
|
|
+ cr != target.GetPostBuildCommands().end(); ++cr)
|
|
|
+ {
|
|
|
+ cmCustomCommand cc(*cr);
|
|
|
+ cc.ExpandVariables(*m_Makefile);
|
|
|
+ char *output = new char [
|
|
|
+ strlen(m_Makefile->GetStartOutputDirectory()) +
|
|
|
+ strlen(libName) + 30];
|
|
|
+ sprintf(output,"%s/%s_force_%i",
|
|
|
+ m_Makefile->GetStartOutputDirectory(),
|
|
|
+ libName, count);
|
|
|
+ std::vector<std::string> args;
|
|
|
+ args.push_back(cc.GetArguments());
|
|
|
+ m_Makefile->AddCustomCommandToOutput(output,
|
|
|
+ cc.GetCommand().c_str(),
|
|
|
+ args,
|
|
|
+ 0,
|
|
|
+ cc.GetDepends());
|
|
|
+ cmSourceFile* outsf =
|
|
|
+ m_Makefile->GetSourceFileWithOutput(output);
|
|
|
+ target.GetSourceFiles().push_back(outsf);
|
|
|
+ count++;
|
|
|
+ delete [] output;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// trace the visual studio dependencies
|
|
|
std::string name = libName;
|
|
|
@@ -280,6 +314,7 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
|
|
|
// Write the DSP file's header.
|
|
|
this->WriteDSPHeader(fout, libName, target, sourceGroups);
|
|
|
|
|
|
+
|
|
|
// Loop through every source group.
|
|
|
for(std::vector<cmSourceGroup>::const_iterator sg = sourceGroups.begin();
|
|
|
sg != sourceGroups.end(); ++sg)
|
|
|
@@ -560,7 +595,7 @@ cmLocalVisualStudio6Generator::CreateTargetRules(const cmTarget &target,
|
|
|
{
|
|
|
std::string customRuleCode = "";
|
|
|
|
|
|
- if (target.GetType() > cmTarget::UTILITY)
|
|
|
+ if (target.GetType() >= cmTarget::UTILITY)
|
|
|
{
|
|
|
return customRuleCode;
|
|
|
}
|