एक और विकल्प, यदि आप ऐपस्टोर के साथ काम कर रहे हैं, तो "एंटाइटेलमेंट्स" की आवश्यकता है और ऐप्पल-फ्रेमवर्क से लिंक करने की आवश्यकता है।
पात्रता काम करने के लिए (उदाहरण के लिए GameCenter) आप जरूरत -buildstep एक "पुस्तकालय के साथ लिंक बाइनरी" है और उसके बाद के लिए "GameKit.framework" के साथ लिंक। सीएमके कमांडलाइन में "निम्न स्तर" पर पुस्तकालयों को इंजेक्ट करता है, इसलिए एक्सकोड वास्तव में इसके बारे में नहीं जानता है, और इस तरह आप क्षमता स्क्रीन में गेमकिट सक्षम नहीं करेंगे।
सीएमके का उपयोग करने के लिए एक तरीका है और "बैनरीज के साथ लिंक" है- बिल्डस्टेप सीएमके के साथ xcodeproj उत्पन्न करना है, और फिर 'sed' का उपयोग '& प्रतिस्थापित करें' पर करें और 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
आप स्क्रिप्ट आदेशों को बदलने के लिए अपनी जरूरत फिट करने के लिए हो सकता है ।
चेतावनी: यह विभिन्न एक्सकोड-संस्करण के साथ तोड़ने की संभावना है क्योंकि प्रोजेक्ट-प्रारूप बदल सकता है, (हार्डकोडेड) अद्वितीय संख्या वास्तव में अद्वितीय नहीं हो सकती है - और आम तौर पर अन्य लोगों द्वारा समाधान बेहतर होते हैं - इसलिए जब तक आपको आवश्यकता नहीं होती Appstore + एंटाइटेलमेंट्स (और स्वचालित बिल्ड) का समर्थन करें, ऐसा मत करें।
यह एक CMake बग, देख http://cmake.org/Bug/view.php?id=14185 और http://gitlab.kitware.com/cmake/cmake/issues/14185
धन्यवाद! – Prime
की [ 'link_directories'] (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:link_directories) हतोत्साहित किया जाता है उपयोग करते हैं, यहां तक कि अपने स्वयं के दस्तावेज में।मुझे लगता है कि मूल प्रश्न में विफल 'find_library' कॉल को हल करने के लिए बेहतर होगा, या @ आंद्रे के समाधान का उपयोग करें। – Fraser
मुझे "आयातित" लाइब्रेरी लक्ष्य अधिक मजबूत होने के लिए मिलता है, क्योंकि यह विशेष लाइब्रेरी के स्थान को लक्षित करता है, बल्कि वैश्विक खोज पथ देता है। आंद्रे का जवाब देखें। –