Еще одна альтернатива: в случае, если вы работаете с Appstore, требуются «Права» и, как таковые, необходимо связываться с Apple-Framework.
Для работы Права (например, GameCenter) вам необходимо создать шаг сборки «Связать двоичный файл с библиотеками», а затем связать его с «GameKit.framework». CMake «вставляет» библиотеки на «низком уровне» в командную строку , поэтому Xcode на самом деле не знает об этом, и поэтому вы не сможете включить GameKit на экране возможностей.
Один из способов использования 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/issues/14185
link_directories
не рекомендуется даже в собственной документации. Я думаю, что здесь было бы лучше разрешить неудачныйfind_library
вызов в исходном вопросе или использовать решение @Andre.