2013-02-27 19 views
5

पर सीएमके के साथ एक। बंडल फ़ाइल जेनरेट करना मैं का उपयोग कर Mac OSX 10.6.8 पर .bundle फ़ाइल में निष्पादन योग्य बनाना चाहता हूं।मैक ओएसएक्स

cmake_minimum_required(VERSION 2.8) 
PROJECT(TESTProject) 
SET(MACOSX_BUNDLE_BUNDLE_NAME TEST) 
ADD_EXECUTABLE(TEST MACOSX_BUNDLE main.cpp) 
SET_TARGET_PROPERTIES(TEST PROPERTIES MACOSX_BUNDLE TRUE) 

तो मैं फोन CMake:

CMake -G"Xcode" . 

हालांकि, जब मैं Xcode 3.2.1 के साथ इस कार्यक्रम संकलन, मैं लगातार बजाय एक TEST.app फ़ाइल एक TEST.bundle फ़ाइल प्राप्त मेरे CMakeLists.txt फ़ाइल की तरह दिखता है।

मैं यहाँ क्या गलत कर रहा हूं?

+0

http://www.cmake.org/Wiki/CMake:Bundles_And_Frameworks की जानकारी से पता चलता है कि 'MACOSX_BUNDLE' इंगित करता है कि लक्ष्य का उपयोग बंडल किए गए एप्लिकेशन (उदाहरण के लिए, कमांड लाइन टूल टेस्ट के बजाय Test.app का उत्पादन करने के लिए किया जाता है)), 'बंडल' बंडल की बजाय। – bdash

+0

हां, वास्तव में। मैं मैक ओएसएक्स पर प्लगइन के लिए बंडल पर विचार कर रहा हूं। – Korchkidu

उत्तर

6

डिफ़ॉल्ट से भिन्न एक्सटेंशन प्राप्त करने के लिए BUNDLE_EXTENSION लक्ष्य संपत्ति का उपयोग करें। http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:BUNDLE_EXTENSION

इसके अलावा, मुझे लगता है कि .app केवल निष्पादन योग्य लक्ष्यों के लिए डिफ़ॉल्ट है। लाइब्रेरी या मॉड्यूल लक्ष्यों के लिए, बंडल डिफ़ॉल्ट मान होना चाहिए।

क्या आपने लाइब्रेरी लक्ष्य के साथ प्रयास किया था?

+2

हां, मैं अंततः सफल हुआ। यह BUNDLE_EXTENSION और add_library (add_executable के बजाय) के साथ विभिन्न आदेशों का एक सेट है। आपकी सहायता के लिए धन्यवाद. – Korchkidu

+0

@ Korchkidu क्या आप कृपया मुझे सही आदेश और ऑर्डर दे सकते हैं जिसमें आपने उन्हें लिखा था। एक उदाहरण भव्य होगा। – crezefire

1

जो कोई भी इस पर होता है और एक पुस्तकालय .bundle का निर्माण करने की कोशिश कर रहा है के लिए, यह CMake 3.0 पर मेरे लिए काम किया:

add_library(Foo MODULE ${SOURCES} ${HEADERS}) 
set_target_properties(Foo PROPERTIES BUNDLE TRUE) 

कुंजी MODULE नहीं SHARED उपयोग करने के लिए है। किसी कारण से, सीएमके अन्यथा BUNDLE संपत्ति को अनदेखा करता है।