Ответ заключается в том, что это зависит от фактической настройки сборки, которую вы пытаетесь изменить, и где она используется.
Как вы уже заметили, настройка, такая как APP_BUNDLE_DISPLAYNAME_SUFFIX
, может принимать только одно слово, и поэтому добавление цитат здесь приводит к их включению в Xcode в значение параметра.
Однако в других местах это другое. В частности, если в сборку встроена настройка на инструментальную цепочку. В этих случаях вам нужно использовать кавычки и экранирование для командной строки Xcode И.
Например: если вы хотите использовать файл xcconfig для установки определений препроцессора (т.е. макросов), и вы хотите определить строковый макрос, вам нужно избежать кавычек, чтобы оболочка не разделяла их, и если у вас есть косые черты в строке, тогда вам также нужно избегать их, потому что Xcode интерпретирует их внутренне.
Пусть в вашем коде у вас есть:
#ifdef MY_MACRO1
const char *my_url = MY_MACRO2;
#endif
Затем этот xcconfig файл будет работать правильно:
//
// my_string_macro.xcconfig
//
GCC_PREPROCESSOR_DEFINITIONS=MY_MACRO1 MY_MACRO2="\"https:\/\/stackoverflow.com\/questions\/30926076\/\""
Xcode выстраивают Настройки инспектор будет показывать значение между крайними двумя двойными кавычками без изменений, но это будет правильно интерпретировано во время компиляции, что приведет к чему-то подобному в журнале компиляции:
clang -x objective-c++ -DMY_MACRO1 -DMY_MACRO2=\"https://stackoverflow.com/questions/30926076/\"