2009-03-02 21 views
41

मुझे अभी एक नया क्वाड कोर कंप्यूटर मिला है और देखा है कि एनमेक केवल 1 प्रक्रिया का उपयोग कर रहा है।मैं एनएमके के लिए सभी कोर का उपयोग कैसे करूं?

मैं 4 प्रक्रियाओं को लॉन्च करने के लिए स्विच -j4 बनाने का उपयोग करता था। एनएमके बराबर क्या है?

[संपादित करें] जानकारी के नीचे मैं अपने qmake परियोजना फाइल करने के लिए एक कमांड को जोड़ने के लिए सक्षम किया गया है के आधार पर:

QMAKE_CXXFLAGS + =/एमपी

जो प्रभावी रूप से मेरे लिए यह किया था। बहुत धन्यवाद।

उत्तर

20

MSDN के अनुसार, वहाँ nmake के लिए ऐसी कोई विकल्प नहीं है।

आप फिर भी कुलपति ++ कमांड लाइन संकलक साथ /MP विकल्प का उपयोग करने और एक ही समय में एक से अधिक फ़ाइलों को पारित करके संकलक समानांतर में एक से अधिक फ़ाइलों का निर्माण कर सकते हैं:

> cl /MP a.cpp b.cpp c.cpp 

हालांकि ध्यान रखें कि अधिकतर Makefiles नहीं है इस तरह के कंपाइलर को कॉल करें - वे सामान्य रूप से प्रत्येक व्यक्तिगत स्रोत फ़ाइल के लिए संकलक को अलग करते हैं, जो /MP विकल्प को कुछ भी उपयोगी करने से रोक देगा।

+1

केवल नहीं .o, लेकिन .obj। वीसी ++ कंपाइलर्स उत्पन्न करता है .obj, GCC - .o, AFAIK – abatishchev

+15

इस ध्वज का उपयोग करने का एक सुविधाजनक तरीका cl.exe को "CL" पर्यावरण चर से पुनर्प्राप्त करना है। इसे अपने सिस्टम गुणों में सेट करें या इसे कमांड लाइन पर टाइप करें: "CL =/MP सेट करें" – jturcotte

3

त्वरित Googling देता है: http://msdn.microsoft.com/en-us/library/bb385193.aspx

+1

जो कि संकलक के समान आमंत्रण में एकाधिक .cpp फ़ाइलों का समानांतर संकलन है - एकाधिक 'मेक' लक्ष्यों की समांतर इमारत नहीं – Alnitak

+0

यह बहुत दिलचस्प है, इस स्विच को VS2008 में कैसे स्विच करें! मुझे यह नहीं मिल रहा है – abatishchev

+0

यह "एनएमके" विकल्प नहीं है, यह एक "सी 1" विकल्प है (यानी कमांड लाइन कंपाइलर के साथ उपयोग के लिए) – Alnitak

6

Incredibuild कई कोर/एकाधिक मशीनों पर एनएमके निर्माण करने में सक्षम होने का दावा करने का दावा करता है। मुझे इसका कोई अनुभव नहीं है।

+0

यह वास्तव में बहुत आसान है और बहुत अच्छा काम करता है। यह एक अच्छा संदर्भ है: http://xoreax.helpserve.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=171 – ttvd

+0

हाँ! मैंने एक ऐप पर काम किया। जो लगभग 1h 20min लिया। पूर्ण रूप से संकलन करने के लिए। Incredibuild और लगभग 10 बहु-प्रोसेसर मशीनों के साथ, एक ही ऐप। 5 मिनट में संकलित। यदि आप मुझसे पूछें तो काफी प्रभावशाली सुधार! –

+0

IncrediBuild का उपयोग करके एनएमके को गतिमान करने के तरीके के संदर्भ में लिंक [लिंक] (http://xoreax.helpserve.com/staff/Knowledgebase/Article/Edit/105) में बदल गया है। अस्वीकरण - इस टिप्पणी का लेखक IncrediBuild – Dori

3

यह सामान्य मेकफ़ाइल के लिए काम नहीं करता है, लेकिन विजुअल स्टूडियो 2005 में एक सेटिंग है जो आपको एक ही समय में एक से अधिक .vcproj फ़ाइल बनाने की सुविधा देती है (बशर्ते कोई दूसरे पर निर्भर न हो)। टूल्स -> विकल्प -> प्रोजेक्ट्स एंड सॉल्यूशंस -> बिल्ड और रन ->एक्स समांतर परियोजना निर्माण की अधिकतम संख्या।

32

क्यूटी उपकरण के लिए इस http://qt.gitorious.org/qt-labs/jom

+0

पर काम करता है उत्कृष्ट खोज !! – SPWorley

+7

प्रीकंपिल्ड जॉम बाइनरीज़ यहां हैं: ftp.qt.nokia.com/jom/ – Lucas

+1

जोम के लिए नया घर https://wiki.qt.io/Jom है। – Hossein

8

CMake 2.8.1 RC1 माना जाता है इस कोशिश के लिए तैयार है लिखने के समय के लिए के रूप में, है, जो NMake Makefiles JOM कहा जाता है Nmake के लिए नए जनरेटर लाने करता है और उसे jom के लिए विशिष्ट सेटिंग्स के साथ Nmake उत्पन्न करता है , जो एनएमके के प्रतिस्थापन में गिरावट है। इस प्रकार, यह एनएमके का उपयोग कर बहु-प्रसंस्करण सक्षम इमारत देता है।

set CL=/MP 
nmake 

सभी सीपीयू कोर का उपयोग करेगा:

37

एक और सामान्य, गैर क्यूटी से संबंधित जिस तरह से सभी कोर का उपयोग करने के nmake बताने के लिए पर्यावरण चर CL/MP करने के लिए सेट किया जा सके।

+1

जैसा कि मैं समझता हूं यह केवल तभी मदद करता है जब एकाधिक फ़ाइलों को एक ही कमांड का उपयोग करके संकलित किया जाता है। – Zitrax

+0

@Zitrax: आप सही हैं। आम तौर पर, आप एक प्रोजेक्ट (फाइलों का समूह) संकलित करते हैं, इसलिए यह काम करता है। –

+2

प्रोजेक्ट मैंने कुछ सौ फाइलों को संकलित करने के लिए देखा, लेकिन प्रत्येक एक अलग सीएल कमांड का उपयोग करता है, जैसे 'cl a.cpp, cl b.cpp, cl c.cpp, ...' तो मैं यह इंगित करना चाहता था कि यह ऐसी स्थिति में nmake के साथ मदद नहीं करता है जब तक कि बिल्ड सिस्टम को प्रत्येक cl कमांड को 'cl a.cpp b.cpp c.cpp ...' जैसी कई फ़ाइलों की आपूर्ति करने के लिए फिर से लिखा नहीं जाता है। – Zitrax

संबंधित मुद्दे