さらにもう1つ、Appstoreで作業している場合は、「資格」が必要であり、Appleフレームワークとリンクする必要があります。
エンタイトルメントを機能させるには(例:GameCenter)、「バイナリをライブラリにリンクする」-buildstepを作成し、「GameKit.framework」にリンクする必要があります。CMakeはライブラリを「低レベル」でコマンドラインに「挿入」します。したがって、Xcodeはそれを実際に認識しないため、機能画面でGameKitを有効にできません。
CMakeを使用して「Link with Binaries」ビルドステップを作成する1つの方法は、CMakeでxcodeprojを生成し、次に「sed」を使用して「検索と置換」を行い、XCodeが好む方法でGameKitを追加することです...
スクリプトは次のようになります(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のソリューションを使用する方が良いと思います。