Jeszcze jedna alternatywa, w przypadku gdy pracujesz z Appstore, potrzebujesz „Entitlements” i jako takiej musisz połączyć się z Apple-Framework.
Aby uprawnienia działały (np. GameCenter), musisz mieć krok kompilacji „Link Binary with Libraries”, a następnie link do „GameKit.framework”. CMake „wstrzykuje” biblioteki na „niskim poziomie” do wiersza poleceń, stąd Xcode tak naprawdę nie wie o tym i jako taki nie włączysz GameKit na ekranie Możliwości.
Jednym ze sposobów używania CMake i posiadania „Link with Binaries” -buildstep jest wygenerowanie xcodeproj za pomocą CMake, a następnie użycie 'sed' do 'wyszukiwania i zamiany' oraz dodanie GameKit tak, jak lubi to XCode ...
Skrypt wygląda następująco (dla 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
zapisz to na „gamecenter.sed”, a następnie „zastosuj” w ten sposób (zmieni to twój xcodeproj!)
sed -i.pbxprojbak -f gamecenter.sed myproject.xcodeproj/project.pbxproj
Być może będziesz musiał zmienić polecenia skryptów, aby dopasować je do swoich potrzeb.
Ostrzeżenie: prawdopodobnie zepsuje się z inną wersją Xcode, ponieważ format projektu może się zmienić, unikalny numer (zakodowany na stałe) może nie być unikalny - i ogólnie rozwiązania innych osób są lepsze - więc chyba że musisz wspierać Appstore + Uprawnienia (i automatyczne kompilacje), nie rób tego.
To jest błąd CMake, zobacz http://cmake.org/Bug/view.php?id=14185 i http://gitlab.kitware.com/cmake/cmake/issues/14185
link_directories
, nawet w jego własnej dokumentacji. Myślę, że byłoby lepiej, gdybyśmy rozwiązali problem zawartyfind_library
w pierwotnym pytaniu lub skorzystali z rozwiązania @ Andre.