Browse Source

Xcode: Add target property to override explicitFileType

Gregor Jasny 9 years ago
parent
commit
0ae4632119

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

@@ -294,6 +294,7 @@ Properties on Targets
    /prop_tgt/WIN32_EXECUTABLE
    /prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS
    /prop_tgt/XCODE_ATTRIBUTE_an-attribute
+   /prop_tgt/XCODE_EXPLICIT_FILE_TYPE
    /prop_tgt/XCODE_PRODUCT_TYPE
    /prop_tgt/XCTEST
 

+ 8 - 0
Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst

@@ -0,0 +1,8 @@
+XCODE_EXPLICIT_FILE_TYPE
+------------------------
+
+Set the Xcode ``explicitFileType`` attribute on its reference to a
+target.  CMake computes a default based on target type but
+can be told explicitly with this property.
+
+See also :prop_tgt:`XCODE_PRODUCT_TYPE`.

+ 2 - 0
Help/prop_tgt/XCODE_PRODUCT_TYPE.rst

@@ -4,3 +4,5 @@ XCODE_PRODUCT_TYPE
 Set the Xcode ``productType`` attribute on its reference to a
 target.  CMake computes a default based on target type but
 can be told explicitly with this property.
+
+See also :prop_tgt:`XCODE_EXPLICIT_FILE_TYPE`.

+ 4 - 0
Source/cmGlobalXCodeGenerator.cxx

@@ -2313,6 +2313,10 @@ const char* cmGlobalXCodeGenerator::GetTargetLinkFlagsVar(
 const char* cmGlobalXCodeGenerator::GetTargetFileType(
   cmGeneratorTarget* target)
 {
+  if (const char* e = target->GetProperty("XCODE_EXPLICIT_FILE_TYPE")) {
+    return e;
+  }
+
   switch (target->GetType()) {
     case cmStateEnums::OBJECT_LIBRARY:
     case cmStateEnums::STATIC_LIBRARY: