Une autre alternative, dans le cas où vous travaillez avec l'Appstore, vous avez besoin de "droits" et en tant que tel vous devez vous connecter avec un Apple-Framework.
Pour que les droits fonctionnent (par exemple GameCenter), vous devez avoir une étape de construction "Lier le binaire avec les bibliothèques", puis créer un lien avec "GameKit.framework". CMake "injecte" les bibliothèques à un "bas niveau" dans la ligne de commande, donc Xcode ne le sait pas vraiment , et en tant que tel, vous ne le serez pas GameKit activé dans l'écran Capabilities.
Une façon d'utiliser CMake et d'avoir une étape de construction "Lien avec les binaires" est de générer le xcodeproj avec CMake, puis d'utiliser 'sed' pour 'rechercher et remplacer' et ajouter le GameKit comme XCode l'aime ...
Le script ressemble à ceci (pour Xcode 6.3.1).
s#\/\* Begin PBXBuildFile section \*\/#\/\* Begin PBXBuildFile section \*\/\
26B12AA11C10544700A9A2BA \/\* GameKit.framework in Frameworks \*\/ = {isa = PBXBuildFile; fileRef = 26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/; };#g
s#\/\* Begin PBXFileReference section \*\/#\/\* Begin PBXFileReference section \*\/\
26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System\/Library\/Frameworks\/GameKit.framework; sourceTree = SDKROOT; };#g
s#\/\* End PBXFileReference section \*\/#\/\* End PBXFileReference section \*\/\
\
\/\* Begin PBXFrameworksBuildPhase section \*\/\
26B12A9F1C10543B00A9A2BA \/\* Frameworks \*\/ = {\
isa = PBXFrameworksBuildPhase;\
buildActionMask = 2147483647;\
files = (\
26B12AA11C10544700A9A2BA \/\* GameKit.framework in Frameworks xxx\*\/,\
);\
runOnlyForDeploymentPostprocessing = 0;\
};\
\/\* End PBXFrameworksBuildPhase section \*\/\
#g
s#\/\* CMake PostBuild Rules \*\/,#\/\* CMake PostBuild Rules \*\/,\
26B12A9F1C10543B00A9A2BA \/\* Frameworks xxx\*\/,#g
s#\/\* Products \*\/,#\/\* Products \*\/,\
26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/,#g
enregistrez ceci dans "gamecenter.sed" puis "appliquez-le" comme ceci (cela change votre xcodeproj!)
sed -i.pbxprojbak -f gamecenter.sed myproject.xcodeproj/project.pbxproj
Vous devrez peut-être modifier les commandes de script pour répondre à vos besoins.
Attention: il est susceptible de rompre avec une version Xcode différente car le format du projet pourrait changer, le numéro unique (codé en dur) peut ne pas vraiment être unique - et généralement les solutions d'autres personnes sont meilleures - donc à moins que vous n'ayez besoin de soutenir l'Appstore + Droits (et builds automatisés), ne faites pas cela.
Il s'agit d'un bogue CMake, voir http://cmake.org/Bug/view.php?id=14185 et http://gitlab.kitware.com/cmake/cmake/issues/14185
link_directories
est déconseillée, même dans sa propre documentation. Je pense qu'il serait préférable ici de résoudre l'find_library
appel échoué dans la question d'origine, ou d'utiliser la solution de @ Andre.