ENH: add test to make sure custom commands are used

This commit is contained in:
Ken Martin 2005-06-21 09:34:47 -04:00
parent 43e1e82fc6
commit b25dea9f11
3 changed files with 26 additions and 1 deletions

View File

@ -19,6 +19,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
cmCustomCommand::cmCustomCommand() cmCustomCommand::cmCustomCommand()
{ {
m_Used = false;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -28,6 +29,7 @@ cmCustomCommand::cmCustomCommand(const cmCustomCommand& r):
m_CommandLines(r.m_CommandLines), m_CommandLines(r.m_CommandLines),
m_Comment(r.m_Comment) m_Comment(r.m_Comment)
{ {
m_Used = false;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -40,6 +42,7 @@ cmCustomCommand::cmCustomCommand(const char* output,
m_CommandLines(commandLines), m_CommandLines(commandLines),
m_Comment(comment?comment:"") m_Comment(comment?comment:"")
{ {
m_Used = false;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -49,11 +49,16 @@ public:
/** Get the comment string for the command. */ /** Get the comment string for the command. */
const char* GetComment() const; const char* GetComment() const;
/** set get the used status of the command */
void Used() { m_Used = true;};
bool IsUsed() { return m_Used;};
private: private:
std::string m_Output; std::string m_Output;
std::vector<std::string> m_Depends; std::vector<std::string> m_Depends;
cmCustomCommandLines m_CommandLines; cmCustomCommandLines m_CommandLines;
std::string m_Comment; std::string m_Comment;
bool m_Used;
}; };
#endif #endif

View File

@ -92,6 +92,22 @@ void cmLocalUnixMakefileGenerator3::Generate()
// Write the cmake file with information for this directory. // Write the cmake file with information for this directory.
this->WriteDirectoryInformationFile(); this->WriteDirectoryInformationFile();
// all custom commands used?
const std::vector<cmSourceFile*> &srcs = m_Makefile->GetSourceFiles();
std::vector<cmSourceFile*>::const_iterator sit = srcs.begin();
for (;sit != srcs.end(); ++sit)
{
if ((*sit)->GetCustomCommand() && !(*sit)->GetCustomCommand()->IsUsed())
{
cmOStringStream err;
err << "Warning: Custom command for source file "
<< (*sit)->GetSourceName().c_str() << "."
<< (*sit)->GetSourceExtension().c_str()
<< " was not used.";
cmSystemTools::Message(err.str().c_str(), "Warning");
}
}
} }
@ -162,8 +178,9 @@ void cmLocalUnixMakefileGenerator3
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin(); for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
i != classes.end(); i++) i != classes.end(); i++)
{ {
if(const cmCustomCommand* cc = (*i)->GetCustomCommand()) if(cmCustomCommand* cc = (*i)->GetCustomCommand())
{ {
cc->Used();
objTarget = this->GenerateCustomRuleFile(*cc,tgtDir.c_str()); objTarget = this->GenerateCustomRuleFile(*cc,tgtDir.c_str());
if (clean) if (clean)
{ {