Ще одна альтернатива: у випадку, коли ви працюєте з Appstore, потрібні «Права» і як такі потрібно зв’язуватися з Apple-Framework.
Щоб правомочності працювали (наприклад, GameCenter), вам потрібно мати "Build Binary з бібліотеками" -buildstep, а потім посилання на "GameKit.framework". CMake "вводить" бібліотеки на "низькому рівні" в командний рядок, отже, Xcode насправді про це не знає, і як такий ви не отримаєте GameKit включеним на екрані "Capability".
Один із способів використання CMake та побудови "Посилання з бінарними файлами" - це генерувати xcodeproj з CMake, а потім використовувати "sed" для "пошуку та заміни" та додавання GameKit так, як XCode подобається ...
Сценарій виглядає приблизно так (для 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
збережіть це в "gamecenter.sed", а потім "застосуйте" це так (це змінює ваш xcodeproj!)
sed -i.pbxprojbak -f gamecenter.sed myproject.xcodeproj/project.pbxproj
Можливо, вам доведеться змінити команди-скрипти відповідно до ваших потреб.
Попередження: ймовірно, що вийде з різною версією Xcode, оскільки формат проекту міняється, унікальний номер (твердо кодований) може бути насправді не унікальним - і зазвичай рішення інших людей краще - тому, якщо вам не потрібно підтримувати Appstore + Права (і автоматизовані побудови) не роблять цього.
Це помилка CMake, див. Http://cmake.org/Bug/view.php?id=14185 та http://gitlab.kitware.com/cmake/cmake/isissue/14185
link_directories
відмовляє навіть у власній документації. Я думаю, що тут було б краще вирішити невдалийfind_library
дзвінок в оригінальному запитанні або скористатися рішенням @ Andre.