Невозможно связать стручки с целью Calabash

У нас возникли проблемы с интеграцией CocoaPods в цель Calabash.

На данный момент у нас есть 4 цели:

Приложение: обычная цель приложения
Тесты приложений: цель модульных тестов
App-Calabash: цель калебаша
Приложение -API-Stubs: специальная цель

Мы хотим поделиться всеми модулями между App, App-Calabash и App-API-Stubs. Кроме того, AppTests и App-Calabash должны включать другие библиотеки.

Это наш подфайл:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '7.0'

link_with 'App', 'App-Calabash', 'App-API-Stubs'
inhibit_all_warnings!

pod 'MagicalRecord', '~> 2.2'
pod 'AFNetworking', '~> 2.3.1'
pod 'ObjectiveSugar', '~> 1.1.0'
pod 'KZPropertyMapper', '~> 2.5.0'
pod 'FXBlurView', '~> 1.6.2'
pod 'OHHTTPStubs', '~> 3.1.5'
pod 'Google-Maps-iOS-SDK', '~> 1.8.1'
pod 'KVOController', '~> 1.0.1'
pod 'Braintree', '~> 3.3.1'
pod 'TTTAttributedLabel', '~> 1.10.1'
pod 'ObjectiveLuhn', '~> 1.0.0'
pod 'CrashlyticsFramework', '~> 2.2.1'

target 'App-Calabash', :exclusive => true do
  pod 'Calabash', '~> 0.9.169'
end

target 'AppTests', :exclusive => true do
  pod 'Specta', '~> 0.2.1'
  pod 'Expecta', '~> 0.3.0'
  pod 'OCMock', '~> 3.1.1'
end

Все цели строятся и работают нормально, кроме калабашской.
Он жалуется, что не может найти Crashlytics/Crashlytics.h. Но даже если мы временно избегаем использования Crashlytics, он затем жалуется на библиотеку Calabash во время связывания:

ld: warning: directory not found for option '-L/Users/Marco/ios/App/Pods/build/Debug-iphoneos'
ld: file not found: -lPods-App-Calabash-Calabash
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Таким образом, может показаться, что что-то пошло не так с интеграцией модулей в эту конкретную цель.
Я почти уверен, что мне не хватает чего-то простого, но я не могу этого понять.

Любая помощь действительно приветствуется. Спасибо!


person Marco Sero    schedule 07.10.2014    source источник
comment
Если вы найдете решение, просто вернитесь, у меня есть какая-то связанная проблема   -  person AsTeR    schedule 30.10.2014
comment
Моя личная проблема была связана с тем, что я не обратил внимания на следующее сообщение [!] From now on use 'xperience.xcworkspace'., которое появляется только после первого pod install.   -  person AsTeR    schedule 30.10.2014


Ответы (3)


Все утро я искал решение этой проблемы. Я нашел здесь ответ http://flexpletives.blogspot.com.es/2014/02/ios7-tdd-w-ocmock-and-xcode5.html

Перейдите к своей цели Calabash -> Настройки сборки -> Другие флаги компоновщика

Удалить "-force_load" Добавить "-all_load"

person foskon    schedule 07.10.2014
comment
Это не помогло мне - person Colin Tremblay; 10.10.2014
comment
То же самое, у меня даже нет опции -force_load. - person AsTeR; 30.10.2014

Указав исключительную возможность для цели App-Calabash в своем Podfile, вы говорите, что только хотите связать фреймворк Calabash, а не другие, поэтому Crashlytics не будет найден.

target 'App-Calabash', :exclusive => true do
   pod 'Calabash', '~> 0.9.169'
end

Сегодня я установил Calabash с помощью Cocoapods, и вот как у меня все работает:

1.) Добавьте новую конфигурацию в свой проект с именем Calabash или аналогичным (из панели «Информация» в настройках проекта).

2.) Обновите свой подфайл следующей строкой:

pod 'Calabash', :configurations => ['Calabash']

3.) Запустите pod update из командной строки.

4.) В рамках проекта Pods в Targets Support Files вы должны найти файл с именем Pods.calabash.xcconfig. Перетащите (но не выбирайте опцию «копировать при необходимости») этот файл в группу Pods в вашем основном проекте вместе с Pods.debug.xcconfig и Pods.release.xcconfig.

5.) В основном проекте перейдите на панель «Информация» в настройках проекта и разверните конфигурацию Calabash, созданную на шаге 1. Целевая конфигурация вашего основного проекта будет установлена ​​на Pods.debug или Pods.release. Установите его на Pods.calabash.

6.) Создайте новую схему под названием Calabash и отредактируйте ее. Выберите этап «Выполнить» и в раскрывающемся списке на панели «Информация» выберите конфигурацию сборки Calabash.

7.) Чтобы запустить Calabash, выберите только что созданную схему Calabash и запустите.

Надеюсь, эта информация поможет.

person Ross Butler    schedule 05.06.2015

Следующий ответ помог мне решить проблему, почти идентичную этой.

https://stackoverflow.com/a/27039447/1004227

Короче говоря, мне пришлось установить Configurations на None для всех соответствующих целей схемы Calabash. Затем запустите pod install и позвольте Cocoapods сбросить конфигурацию до Pods.calabash.

person palmi    schedule 31.05.2016