2015-06-18 2 views
3

Я начал использовать файл xcconfig для настроек среды, специфичных для среды, и я заметил, что строковые кавычки буквально интерпретируются.Как определить строки в xcconfig и кавычки

например.

APP_BUNDLE_DISPLAYNAME_SUFFIX = "DEBUG"

покажет имя приложения из MyApp "DEBUG" как имя дисплея (с кавычками)

Как вы обрабатывать строки в файле xcconfig, они нужны, чтобы определить строки? Если нет, как вы справляетесь с пустым пространством и убегаете? Любые специальные символы, о которых вам известно?

ответ

1

Ответ заключается в том, что это зависит от фактической настройки сборки, которую вы пытаетесь изменить, и где она используется.

Как вы уже заметили, настройка, такая как 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/\" 
Смежные вопросы