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