Xcode: Add XCODE_FILE_ATTRIBUTES source file property

This adds values to the ATTRIBUTES list in PBXBuildFile settings.
This commit is contained in:
James Touton 2016-06-03 18:51:18 -07:00 committed by Brad King
parent ef494edf76
commit 811f6c8252
3 changed files with 26 additions and 0 deletions

View File

@ -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`:

View File

@ -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"
)

View File

@ -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