浏览代码

ENH: add test to make sure custom commands are used

Ken Martin 20 年之前
父节点
当前提交
b25dea9f11
共有 3 个文件被更改,包括 26 次插入1 次删除
  1. 3 0
      Source/cmCustomCommand.cxx
  2. 5 0
      Source/cmCustomCommand.h
  3. 18 1
      Source/cmLocalUnixMakefileGenerator3.cxx

+ 3 - 0
Source/cmCustomCommand.cxx

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

+ 5 - 0
Source/cmCustomCommand.h

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

+ 18 - 1
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -92,6 +92,22 @@ void cmLocalUnixMakefileGenerator3::Generate()
   
   // Write the cmake file with information for this directory.
   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(); 
       i != classes.end(); i++)
     {
-    if(const cmCustomCommand* cc = (*i)->GetCustomCommand())
+    if(cmCustomCommand* cc = (*i)->GetCustomCommand())
       {
+      cc->Used();
       objTarget = this->GenerateCustomRuleFile(*cc,tgtDir.c_str());
       if (clean)
         {