Après avoir examiné le propre exemple de CocoaPods (extrait de https://guides.cocoapods.org/syntax/podfile.html#abstract_target )
# Note: There are no targets called "Shows" in any of this workspace's Xcode projects
abstract_target 'Shows' do
pod 'ShowsKit'
# The target ShowsiOS has its own copy of ShowsKit (inherited) + ShowWebAuth (added here)
target 'ShowsiOS' do
pod 'ShowWebAuth'
end
# The target ShowsTV has its own copy of ShowsKit (inherited) + ShowTVAuth (added here)
target 'ShowsTV' do
pod 'ShowTVAuth'
end
# Our tests target has its own copy of
# our testing frameworks, and has access
# to ShowsKit as well because it is
# a child of the abstract target 'Shows'
target 'ShowsTests' do
inherit! :search_paths
pod 'Specta'
pod 'Expecta'
end
end
Je ne vois pas pourquoi inherit! :search_paths
est nécessaire? Les 3 cibles, ShowsiOS
, ShowsTV
et ShowsTests
ont accès à ShowsKit
à partir de leur cible parent.
L'exemple spécifique pour inherit!
(de https://guides.cocoapods.org/syntax/podfile.html#inherit_bang ) n'ajoute aucune clarté
target 'App' do
target 'AppTests' do
inherit! :search_paths
end
end
Pouvez-vous m'aider à comprendre ce que inherit! :search_paths
est pour?
Le but derrière derrière inherit!
, selon https://guides.cocoapods.org/syntax/podfile.html#inherit_bang (dont je conviens que ce n'est pas très clair), consiste à fournir l'un des 3 modes disponibles:
:complete
La cible hérite de tout comportement du parent.:none
La cible n'hérite d'aucun comportement du parent.:search_paths
La cible hérite uniquement des chemins de recherche du parent.Dans l'exemple de cette question, c'est le :search_paths
mode qui est exprimé. Les trois modes différents remplissent des rôles différents lors du test d'un projet Pod.
Voici un lien supplémentaire se rapportant aux chemins de recherche de framework dans Xcode qui a aidé à éliminer une certaine confusion pour moi.
Une cible avec une dépendance peut utiliser cette fonctionnalité. Le meilleur exemple est Test target
qui utilise app target
. Dans ce cas, vous pouvez créer une hiérarchie dans votre Podfile
target 'App' do
target 'Tests' do
# inherit! :none # empty
# inherit! :complete # by default if you do not specify any inherit!
# inherit! :search_paths # uses only `search` paths
end
end
Jeter un coup d'œil à Pods/Targets Support Files/
répertoire et comparer
Pods-<App_target_name>/Pods-<App_target_name>.<debug/release>.xcconfig
Pods-<Test_target_name>/Pods-<Test_target_name>.<debug/release>.xcconfig
Vous constaterez que les paramètres qui sont passés à la cible réelle sont différents pour différents inherit!
réglage. Dans le cas avec :search_paths
- FRAMEWORK_SEARCH_PATHS
, HEADER_SEARCH_PATHS
... ont été hérités et ont été transmis aux champs correspondants dans Build Settings