浏览代码

Merge topic 'fix-custom-source-with-flags-crash'

f037b9b Generators: don't append sources from utility targets to objectSources
Brad King 12 年之前
父节点
当前提交
8f80eaf981
共有 3 个文件被更改,包括 15 次插入1 次删除
  1. 8 1
      Source/cmGeneratorTarget.cxx
  2. 7 0
      Tests/CustomCommand/CMakeLists.txt
  3. 0 0
      Tests/CustomCommand/source_in_custom_target.cpp

+ 8 - 1
Source/cmGeneratorTarget.cxx

@@ -114,7 +114,10 @@ std::vector<cmSourceFile*> const& cmGeneratorTarget::GetSourceFiles()
 void cmGeneratorTarget::ClassifySources()
 void cmGeneratorTarget::ClassifySources()
 {
 {
   cmsys::RegularExpression header(CM_HEADER_REGEX);
   cmsys::RegularExpression header(CM_HEADER_REGEX);
-  bool isObjLib = this->Target->GetType() == cmTarget::OBJECT_LIBRARY;
+
+  cmTarget::TargetType targetType = this->Target->GetType();
+  bool isObjLib = targetType == cmTarget::OBJECT_LIBRARY;
+
   std::vector<cmSourceFile*> badObjLib;
   std::vector<cmSourceFile*> badObjLib;
   std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
   std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
   for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
   for(std::vector<cmSourceFile*>::const_iterator si = sources.begin();
@@ -126,6 +129,10 @@ void cmGeneratorTarget::ClassifySources()
       {
       {
       this->CustomCommands.push_back(sf);
       this->CustomCommands.push_back(sf);
       }
       }
+    else if(targetType == cmTarget::UTILITY)
+      {
+      this->ExtraSources.push_back(sf);
+      }
     else if(sf->GetPropertyAsBool("HEADER_FILE_ONLY"))
     else if(sf->GetPropertyAsBool("HEADER_FILE_ONLY"))
       {
       {
       this->HeaderSources.push_back(sf);
       this->HeaderSources.push_back(sf);

+ 7 - 0
Tests/CustomCommand/CMakeLists.txt

@@ -449,3 +449,10 @@ set_property(SOURCE perconfig.out PROPERTY SYMBOLIC 1)
 add_custom_target(perconfig_target ALL
 add_custom_target(perconfig_target ALL
   COMMAND ${CMAKE_COMMAND} -E echo "perconfig=$<TARGET_FILE:perconfig>" "config=$<CONFIGURATION>"
   COMMAND ${CMAKE_COMMAND} -E echo "perconfig=$<TARGET_FILE:perconfig>" "config=$<CONFIGURATION>"
   DEPENDS perconfig.out)
   DEPENDS perconfig.out)
+
+# Test SOURCES in add_custom_target() with COMPILE_DEFINITIONS
+# which previously caused a crash in the makefile generators.
+add_custom_target(source_in_custom_target SOURCES source_in_custom_target.cpp)
+set_property(SOURCE source_in_custom_target
+  PROPERTY COMPILE_DEFINITIONS "TEST"
+)

+ 0 - 0
Tests/CustomCommand/source_in_custom_target.cpp