فهرست منبع

Xcode: Add XCODE_FILE_ATTRIBUTES source file property

This adds values to the ATTRIBUTES list in PBXBuildFile settings.
James Touton 9 سال پیش
والد
کامیت
811f6c8252
3فایلهای تغییر یافته به همراه26 افزوده شده و 0 حذف شده
  1. 1 0
      Help/manual/cmake-properties.7.rst
  2. 11 0
      Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
  3. 14 0
      Source/cmGlobalXCodeGenerator.cxx

+ 1 - 0
Help/manual/cmake-properties.7.rst

@@ -344,6 +344,7 @@ Properties on Source Files
    /prop_sf/VS_XAML_TYPE
    /prop_sf/WRAP_EXCLUDE
    /prop_sf/XCODE_EXPLICIT_FILE_TYPE
+   /prop_sf/XCODE_FILE_ATTRIBUTES
    /prop_sf/XCODE_LAST_KNOWN_FILE_TYPE
 
 .. _`Cache Entry Properties`:

+ 11 - 0
Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst

@@ -0,0 +1,11 @@
+XCODE_FILE_ATTRIBUTES
+---------------------
+
+Add values to the Xcode ``ATTRIBUTES`` setting on its reference to a
+source file.  Among other things, this can be used to set the role on
+a mig file::
+
+  set_source_files_properties(defs.mig
+      PROPERTIES
+          XCODE_FILE_ATTRIBUTES "Client;Server"
+  )

+ 14 - 0
Source/cmGlobalXCodeGenerator.cxx

@@ -714,6 +714,20 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFile(
     }
   }
 
+  // Add user-specified file attributes.
+  const char* extraFileAttributes = sf->GetProperty("XCODE_FILE_ATTRIBUTES");
+  if (extraFileAttributes) {
+    // Expand the list of attributes.
+    std::vector<std::string> attributes;
+    cmSystemTools::ExpandListArgument(extraFileAttributes, attributes);
+
+    // Store the attributes.
+    for (std::vector<std::string>::const_iterator ai = attributes.begin();
+         ai != attributes.end(); ++ai) {
+      attrs->AddObject(this->CreateString(*ai));
+    }
+  }
+
   settings->AddAttributeIfNotEmpty("ATTRIBUTES", attrs);
 
   // Add the fileRef to the top level Resources group/folder if it is not