2011-03-17 7 views
40

मैं जानना चाहता हूं कि मैं एक सीएमके सेटअप कैसे लिख सकता हूं जो किसी भी कंपाइलर और ओएस का उपयोग कर x86 और x64 आर्किटेक्चर दोनों के लिए संकलन की अनुमति देता है।सीएमके मल्टीआर्किटेक्चर संकलन

+0

संभवतः प्रासंगिक: http://stackoverflow.com/questions/5280168/ बनाने-ए-क्रॉस-प्लेटफ़ॉर्म-लाइब्रेरी-के साथ-सेमेक –

उत्तर

73

यह अच्छा होगा अगर सीएमके के पास 32/64 बिट विकल्प बॉक्स से बाहर था। ऐसा नहीं है, इसलिए आपको विभिन्न कंपाइलर या जेनरेटर निर्भर तरीकों में से एक को लागू करने की आवश्यकता होगी। उदा .:

  • जीसीसी (लिनक्स पर) और कुछ अन्य कंपाइलर, उदा। सन स्टूडियो CFLAGS और CXXFLAGS को -m32 (32-बिट बिल्ड) या -m64 (64-बिट बिल्ड) शामिल करने के लिए सेट करें।

  • विंडोज, विजुअल स्टूडियो जनरेटर। 64 बिट जेनरेटर का प्रयोग करें, उदा।

    cmake -G "Visual Studio 10 Win64" path\to\source\dir

    64-बिट (64) को संकलित करने के। जनरेटर नाम में "Win64" को छोड़ दें, 32 बिट

  • मैक ओएस एक्स। CMAKE_OSX_ARCHITECTURES सीएमके चर का उपयोग करें।

    cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir 32 बिट का निर्माण

    cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir 64 बिट संकलन होगा संकलित कर देगा।

    cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir 96-बिट सार्वभौमिक binaries :)

ऊपर थोड़ा reworded है पैदा करेगा।

http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-achitectures.html

+0

यह अद्भुत है! लेकिन विजुअल स्टूडियो के लिए, क्या यह जीजी नहीं होना चाहिए क्योंकि यह जनरेटर है? विजुअल स्टूडियो के लिए, क्या सीएमके लिस्ट.txt फ़ाइल में स्वचालित रूप से यह बताने के लिए कुछ प्रकार का झंडा सेट करना संभव होगा (यानी अनुरोध है कि आप i386 या x86-64 का चयन करें, और इसे अपनी प्रतिक्रिया के आधार पर सेट करें)? – OniLink

+0

यह -G होना चाहिए, और जनरेटर को कमांड लाइन पर पास किया जाना चाहिए। आप cmake-gui, एक क्यूटी आधारित ग्राफिकल इंटरफ़ेस का भी उपयोग कर सकते हैं, और ड्रॉप डाउन सूची से उचित जेनरेटर चुन सकते हैं। –

+1

@ ओनीलिंक, @ मर्कस। हाँ, यह होना चाहिए -जी। ध्यान देने के लिए बहुत बहुत धन्यवाद! मैंने इसे अभी तय किया है (और MySQL विकी में भी वही मार्ग तय किया है)। मेरे ज्ञान के लिए, सीएमकेलिस्ट के अंदर विजुअल स्टूडियो के लिए सीधा बदलना।txt संभव नहीं है, यहां जनरेटर जनरेटर की संपत्ति है, और जनरेटर को गतिशील रूप से सेट/बदला नहीं जा सकता है। –

2

मूल पर जाने के लिए CMake tutorial ऑनलाइन उपलब्ध है, यह सीएमके पुस्तक से लिया जाता है। सीएमके दर्शन एक एकल स्रोत पेड़ के साथ, कई निर्माण निर्देशिकाओं का उपयोग करना है। तो आप विंडोज़ पर विजुअल स्टूडियो का उपयोग कर सकते हैं और 32 बिट कंपाइलर का उपयोग करके एक बिल्ड निर्देशिका बना सकते हैं, और दूसरा 64 बिट कंपाइलर का उपयोग कर सकते हैं।

सीएमके बड़ी संख्या में कंपाइलर्स और ऑपरेटिंग सिस्टम को लक्षित करता है, लेकिन आप इस बात का जिक्र नहीं करते कि आप किस भाषा का उपयोग कर रहे हैं, आप किस ऑपरेटिंग सिस्टम/कंपाइलर/आर्किटेक्चर के बारे में सोच रहे हैं और यदि आप किसी टूलकिट/पुस्तकालयों का उपयोग कर रहे हैं।

+0

उत्तर के पास इस प्रश्न से कोई लेना देना नहीं है। – Yola

0

CMAKE_OSX_ARCHITECTURES = i386 आप त्रुटि देता है "गैर मान्यता प्राप्त विकल्प -arch" से शुरुआत करने और ऐसा करें:

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10