2009-08-28 12 views
13

Je travaille avec un projet existant qui produit une bibliothèque dynamique (API Cocoa).Comment modifier une cible Xcode existante de dynamique à statique?

Je préfère générer une bibliothèque statique, mais si je change le | champ [Lier type Mach-O] de "Dynamic Library" à "Bibliothèque statique", fois le projet Clean and Build Project plaignez que la La cible a une valeur MACH_O_TYPE non valide de 'staticlib'.

Existe-t-il un moyen simple pour que la construction produise un fichier .a statique?

Merci,
Eric

Répondre

4

Je fini par créer un nouveau projet « bibliothèque statique », puis ajouté tous les membres. Fermer xcode et afficher les deux fichiers de projet dans un éditeur de texte me permet de terminer rapidement le nouveau projet.

+2

Malheureusement c'est la bonne solution. Il n'existe actuellement aucun moyen de convertir une cible d'un type de cible à un autre. – cdespinosa

20

Ouvre le project.pbxproj fichier dans YourProjectName.xcodeproj dossier à l'aide TextEdit, recherche pour productType et changer sa valeur de "com.apple.product dynamique" à "com.apple .product-static "

+9

dans mon cas c'est ** com.apple.product-type.library.dynamic ** à être changé en ** com.apple.product-type.library.static **. Peut-être que c'est une version de xcode différente, je suggère de créer un nouveau projet de lib statique et de copier productType à partir de là – pqnet

+0

Pour Xcode 9: la bibliothèque statique est 'com.apple.product-type.library.static', la bibliothèque dynamique est' com.apple .product-type.library.dynamic', le framework est 'com.apple.product-type.framework', le bundle générique est' com.apple.product-type.bundle', le bundle de tests unitaires 'com.apple.product- type.bundle.unit-test', l'application est 'com.apple.product-type.application' et l'outil de ligne de commande est' com.apple.product-type.tool'. Il y en a beaucoup plus, mais ce sont de loin les plus communs – ThatsJustCheesy