2017-07-14 3 views
0

Je crée un pod pour une bibliothèque open source et dois laisser intacte la structure du répertoire pour les fichiers d'en-tête publics. L'exemple simplifié est la suivante:pod lib lint plaintes concernant les fichiers d'en-tête en dehors de header_mappings_dir

include/header1.h 
include/foo/header2.h 
src/file.c 
src/internal.h 

Le répertoire include contient les en-têtes publics.

Mon podspec contient:

s.public_header_files = 'Foo/Classes/include/**/*' 
s.private_header_files = 'Foo/Classes/src/internal.h' 
s.header_mappings_dir = 'Foo/Classes/include' 

Le projet Example compile bien et le répertoire Pods/Headers/Public/Foo contient la même structure que le répertoire include d'origine.

encore pod lib lint Foo.podspec --use-libraries me donne cette erreur:

- ERROR | [iOS] header_mappings_dir: There are header files outside of the header_mappings_dir (Foo/Classes/src/internal.h) 

bien. Oui. Effectivement. Mais pourquoi est-ce une erreur? Je suis totalement d'accord avec la situation.

J'ai moi-même trouvé une solution, mais je ne suis pas sûre, si c'est la bonne.

s.exclude_files = 'Foo/Classes/src/internal.h' 

Cela rend le linter heureux et le projet compile encore. Mais il se sent mal, car le fichier fait partie du projet.

Merci!

Répondre

0

Je vais répondre moi-même.

La solution de contournement exclude_files n'a pas fonctionné lors de l'envoi de la balise podspec à un serveur git. Le problème était en fait une idée fausse: n'utilisez pas l'autre spécification de chemin pour exclure les fichiers que vous avez explicitement spécifiés dans la ligne source_files!

La solution consistait explicitement à ajouter uniquement les fichiers à la ligne source_files, qui font partie des en-têtes publics ou devraient obtenir une règle de compilation dans Xcode.

Tous les autres fichiers (en-têtes en dehors des fichiers header_mappings_dir et .c qui devraient être inclus mais non établis sur leur propre) sont ajoutés via

s.preserve_paths = 'Foo/Classes/src/**/*' 

Maintenant, tout fonctionne.