2013-07-28 10 views
6

Mam obszar roboczy XCode zarządzany przez Cocoapod z kilkoma zależnościami do bibliotek zewnętrznych. Jeden z nich, MTDates, rozszerza się o NSDate i NSDateComponents z użyciem metod prefiksowanych lub nieprefiksowanych, jeśli zdefiniowano określone makro preprocesora (co jest tym, czego chcę).Określanie makr preprocesora dla zależności cocoapod, bez rozwidlenia go

Istnieje kilka miejsc, w których można umieścić makroprocesorową definicję makra, aby skompilowana biblioteka zawierała nieprefiksowane metody, ale wszystkie wydają się być resetowane, gdy tylko poprosię o aktualizację projektu, co prowadzi do tego, że Cocoapod żebym myślał, że te konfiguracje są sterowane przez specyfikację pod. Należą do nich:

  • ustawienia cel zbudować kapsuły
  • prywatny plik kapsuły .xcconfig w Cocoapod za Targets obsługuje plików

Zmiana specyfikacji kapsuły wymagałoby zarządzać własną wersję biblioteki w wyniku której utracono możliwość uaktualnienia go, gdy pojawi się nowa wersja. Tak więc moje pytanie brzmi: czy istnieje sposób na określenie makra preprocesora dla zależności cocoapod, bez rozwidlania bloku i zmieniania samej specyfikacji?

Edit:

Jest open issue o tym, że wydają się być tuż za rogiem.

Odpowiedz

8

Ta funkcja jest już dostępna. Oto przykład tego, co można umieścić na dole Podfile, aby dodać makro na podstawie określonej konfiguracji.

post_install do |installer_representation| 
    installer_representation.project.targets.each do |target| 
    if target.name == "Pods-TweaksBuildConfigurationsDemo-Tweaks" 
     target.build_configurations.each do |config| 
     if config.name == 'QA' 
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'FB_TWEAK_ENABLED=1'] 
     end 
     end 
    end 
    end 
end 
+1

Używanie cocoapods wersja 1.0.0.beta.3 Muszę użyć installer_representation.pods_project zamiast installer_representation.project –

+7

Więc musisz dodać 10 linii kodu, aby zdefiniować makro? To straszne. – iosdude

1

Patrząc na dokumentację Cocoapods, nie sądzę, żeby to było jeszcze możliwe, myślę, że możesz skopiować specyfikację strąków - wprowadź żądane zmiany (np. s.prefix_header_contents = #define symbolToDefine), a następnie dodaj je do lokalnych specyfikacji z inną nazwą i użyj tego w twoim pliku pod. Kiedy niestety pojawi się nowa wersja, musisz wejść i zmienić numer tagu (i inne rzeczy w zależności od zmian).

+0

Dziękuję bardzo, że odpowiada na moje pytanie. Pójdę naprzód i napiszę problem, aby sprawdzić, czy taka funkcjonalność może się udać. – matehat

Powiązane problemy