อีกทางเลือกหนึ่งในกรณีที่คุณทำงานกับ Appstore ต้องมี "สิทธิ" และจำเป็นต้องเชื่อมโยงกับ Apple-Framework
เพื่อให้สิทธิ์ทำงานได้ (เช่น GameCenter) คุณต้องมีขั้นตอน "Link Binary with Libraries" จากนั้นเชื่อมโยงกับ "GameKit.framework" CMake "ฉีด" ไลบรารีใน "ระดับต่ำ" ลงในบรรทัดคำสั่งดังนั้น Xcode จึงไม่รู้เกี่ยวกับเรื่องนี้จริงๆและด้วยเหตุนี้คุณจะไม่ได้รับการเปิดใช้งาน GameKit ในหน้าจอความสามารถ
วิธีหนึ่งในการใช้ CMake และมี "Link with Binaries" -buildstep คือการสร้าง 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-version ที่แตกต่างกันเนื่องจากรูปแบบโครงการอาจเปลี่ยนแปลงได้หมายเลขเฉพาะ (ฮาร์ดโค้ด) อาจไม่ซ้ำกันจริงๆ - และโดยทั่วไปวิธีแก้ปัญหาโดยคนอื่นจะดีกว่า - ดังนั้นเว้นแต่คุณจะต้องสนับสนุน Appstore + สิทธิ์ (และบิลด์อัตโนมัติ) อย่าทำเช่นนี้
นี่เป็นข้อบกพร่องของ CMake โปรดดูที่http://cmake.org/Bug/view.php?id=14185และhttp://gitlab.kitware.com/cmake/cmake/issues/14185
link_directories
เป็นกำลังใจแม้จะอยู่ในเอกสารของตัวเอง ฉันคิดว่ามันจะดีกว่าที่นี่หากจะแก้ปัญหาการfind_library
โทรที่ล้มเหลวในคำถามเดิมหรือใช้วิธีแก้ปัญหาของ @ Andre