Как изменить SWIFT_MODULE_NAME?
Название говорит само за себя. Я искал в настройках сборки SWIFT_MODULE_NAME, но ничего не вышло. Я также искал в Интернете, и есть ссылки на это имя, но нет информации о том, как оно определено. Кроме того, я не нашел упоминаний о SWIFT_MODULE_NAME в Документах Apple.
Я знаю это: он используется в настройке сборки "Имя заголовка сгенерированного интерфейса Objective-C", и его можно просмотреть, дважды щелкнув по значению настроек:
$ (SWIFT_MODULE_NAME) -Swift.h
Он используется для преодоления разрыва между Objective-C и Swift и появляется только для проектов, включающих файлы Swift (наряду с файлами Objective-C, которые я предполагаю). На момент публикации Xcode 7.3 был самым последним и лучшим.
Но где определяется это значение и как его изменить?
3 ответа
Имя модуля происходит из настройки сборки Product Module Name:
SWIFT_MODULE_NAME
настройка, по-видимому, скрыта, но вы можете увидеть ее происхождение, посмотрев на Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/XCLanguageSupport.xcplugin/Contents/Resources/Swift.xcspec
:
...
{
Name = "SWIFT_MODULE_NAME";
Type = String;
DefaultValue = "$(PRODUCT_MODULE_NAME)";
CommandLineArgs = (
"-module-name",
"$(value)",
);
},
...
Build Settings
содержит Product Module Name
это определяет, что import
инструкция будет выглядеть при использовании. Например, когда вы создаетеLibrary
или Framework
.
По умолчанию равно PRODUCT_NAME
. (Соответствие имен является обязательным)
Значения по умолчанию:
Product Name
:$(TARGET_NAME:c99extidentifier)
Product Module Name
:$(PRODUCT_NAME:c99extidentifier)
Это значение может быть изменено .modulemap
используя Objective-C
С помощью:
//Objective-C
@import module_name;
//Swift
import module_name
Зайдите в настройки и нажмите "+" рядом с "Уровни". Увидеть:
замените NEW_SETTING на SWIFT_MODULE_NAME в качестве имени параметра, и любое имя модуля для файла.h (без пробелов, пожалуйста) будет справа.
Вы проверили этот документ: developer.apple.com/library/ios/documentation/Swift/Conceptual/…? обычно это название вашего продукта. Вы можете установить изменение значения в "Идентификаторе комплекта продукта" в Настройках сборки. Обратите внимание, что вы не можете переопределить имя продукта в Framework
Смотрите скриншот: