Как удалить предупреждение: "-pie игнорируется. Он используется только при связывании основного исполняемого файла"
после обновления до Xcode10 и Swift 4.2 я всегда получаю предупреждения о времени сборки в моем модуле. что я должен сделать, чтобы удалить это предупреждение?
Я пытался удалить производные данные, очистить и построить проект, но он не работает :(
Я нашел, что кто-то задает тот же вопрос здесь https://github.com/Alamofire/Alamofire/issues/2624, и есть ответ от Джона Шира, но я все еще не могу решить проблему после удаления предыдущего xcworkspace и обновления cocoapods, Я не реализовал изменение параметра "Создать зависимый от позиции исполняемый файл", потому что не могу его найти. Пожалуйста, поделитесь, если вы можете найти решение этой проблемы :)
Ответы
Ответ 1
Установка "Генерировать позиционно-зависимый код" на "Да" не является правильным решением. Независимо от позиции является предпочтительным. Цели, не связанные с приложениями, такие как фреймворки и библиотеки, всегда будут в любом случае независимыми от позиции, поэтому предупреждение.
Отображаемое предупреждение является сообщением компоновщика, и другой параметр в снимке экрана @Marcpek кажется более подходящим: "Связывание> Создать зависимый от позиции исполняемый файл". QuickHelp показывает, что это настройка LD_NO_PIE
.
Несмотря на то, что это все равно наследует No
от значений по умолчанию ОС, я попытался снова установить его в Нет в моих целях CocoaPod явно, и это, похоже, сработало, исправляя предупреждение компоновщика.
Любые ваши настройки проекта будут потеряны при следующем запуске pod install
, поэтому отредактируйте Podfile, чтобы сделать изменение постоянным. Добавьте config.build_settings['LD_NO_PIE'] = 'NO'
в фазу post_install:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['LD_NO_PIE'] = 'NO'
end
end
end
Ответ 2
В конечном итоге, мне удалось включить позиционно-зависимый код для проекта Pods. Я пытался отключить предупреждения от модулей и очистить (вместо того, чтобы включить) параметр "Генерировать код, зависящий от позиции", но это не помогло.
Отключить -pie для модулей
Чтобы включить позиционно-зависимый код (и, следовательно, удалить -pie, который является P osition I независимой C ode), после открытия xcworkspace перейдите в Настройки сборки проекта Pods (настройки для всего проекта Pods
, см. скриншот), выполните поиск по position
и установите для параметра "Построение кода, зависящего от позиции" значение Да.
Ответ 3
Один из вариантов - переключиться на связывание модулей в виде статических библиотек вместо фреймворков. use_frameworks!
требовался, когда Swift не поддерживал статические библиотеки, но теперь, когда он это делает, вы можете удалить эту строку из вашего подфайла, pod install
, и предупреждение должно исчезнуть.
Больше информации по истории use_frameworks
: fooobar.com/questions/2423615/...
Ответ 4
- обновить cocoapods
- Удалить xcworkspace
- запустить "pod install"
- clear Создать папку в меню "Продукт"