मेरे पास एक छोटा परीक्षण प्रोजेक्ट है जो समानांतरकरण के लिए ओपनएमपी का उपयोग करता है। मेरा लक्ष्य इसे संकलित करना है इसलिए यह पुस्तकालयों के लिए .dll
और उत्पादन करता है .lib
(क्योंकि इन प्रकारों का उपयोग करके वितरित बाहरी पुस्तकालयों के लिए मेरी वास्तविक परियोजना लिंक), ओपनएमपी 4.5 या नए के लिए समर्थन के साथ और इसे कमांड लाइन से करते हैं ताकि यह एक डॉक पर किया जा सके परीक्षण और जाँच (docker भाग इस प्रश्न के दायरे से बाहर है, यह सिर्फ इस बात के लिए है कि मुझे कमांड लाइन से काम करने की आवश्यकता क्यों है)। मैं इस परियोजना को अलग-अलग संकलक के साथ संकलित कर सकता हूं जिसके साथ मैं खुश नहीं हूं:
- MSVC:,
mkdir build-msvc
फिरcmake ..
(नए बनाए गए फ़ोल्डर से) और अंत मेंcmake --build . --config Release
। यह ठीक संकलित करता है लेकिन केवल OpenMP 2.0 का समर्थन करता है, इसलिए मेरी वास्तविक परियोजना के लिए एक अच्छा विकल्प नहीं है। - इंटेल समानांतर स्टूडियो:,
mkdir build-intel
फिरcmake .. -T "Intel C++ Compiler 19.0"
(नए बनाए गए फ़ोल्डर से) और अंत मेंcmake --build . --config Release
। यह OpenMP 5.0 का समर्थन करता है, लेकिन इसके लाइसेंस मेरे लिए बहुत महंगे हैं। - MinGW x64 g ++:,
mkdir build-g++
फिरcmake .. -G "MinGW Makefiles"
(नए बनाए गए फ़ोल्डर से) और अंत मेंcmake --build .
। यह OpenMP 4.5 का समर्थन करता है लेकिन यह संकलक संगत wiht नहीं है.lib
(जहाँ तक मुझे पता है) जो मैंने पहले ही उल्लेख किया है वह मेरे लिए आवश्यक है।
मैंने क्लैंग का उपयोग करने के लिए सफलता के बिना कोशिश की है:
- MSVC से CLANG:,
mkdir build-clang-msvc
तबcmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..
(नए बनाए गए फ़ोल्डर से), लेकिन यह निम्न त्रुटि के साथ विफल रहता है:
- CXX संकलक पहचान MSVC जैसी कमांड-लाइन के साथ Clang 8.0.1 है - काम करने के लिए जाँच करें CXX कंपाइलर: C: / प्रोग्राम फाइल्स (x86) / Microsoft विज़ुअल स्टूडियो / 2019 / कम्युनिटी / VC / टूल्स / Llvm / bin / clang-cl.exe - काम करने के लिए जाँच करें CXX कंपाइलर: C: / प्रोग्राम फाइल्स (x86) / Microsoft विज़ुअल स्टूडियो / 2019 / कम्युनिटी / VC / टूल्स / Llvm / bin / clang-cl.exe - टूटा C पर सीमेक एरर: / प्रोग्राम फाइल्स / सीएमके / शेयर / cmake-3.15 / मॉड्यूल / CMakeTestCXXCompiler.cmake: 53 (संदेश): सी ++ संकलक "सी: / प्रोग्राम फाइल्स (x86) / माइक्रोसॉफ्ट विजुअल स्टूडियो / 2019 / कम्युनिटी / वीसी / टूल्स / एलएलवीएम / बिन / क्लैंग-क्ले।" एक साधारण परीक्षण कार्यक्रम संकलित करने में सक्षम नहीं है। यह निम्न आउटपुट के साथ विफल होता है: परिवर्तन करें: C: / उपयोगकर्ता / [USER NAME] / स्रोत / repos / test_openmp / build-clang-msvc / CMakeFiles / CMakeTmp रन बिल्ड कमांड (s): C: /PROGRA~2/MICROS~1/2019/COMMUNAN1/Common7/IDE/COMMON~1/MICROS~1/CMake/Ninja/ninja.exe cmTC_bd131 && [1/2] बिल्डिंग CXX ऑब्जेक्ट CMakeFiles \ cmTC_bd131.dir \ testCXXCompiler.cxx.obj [2/2] CXX निष्पादन योग्य cmTC_bd131.exe को जोड़ना विफल: cmTC_bd131.exe cmd.exe / C "cd। &&" C: \ Program Files \ CMake \ bin \ cmake.exe "-E vs_link_exe --intdir = CMakeFiles \ cmTC_bd131.dir --rc =c_mt = CMAKE_MT-NOTFOUND - मैनिफ़ेस्ट्स - C: \ PROGRA ~ 1 \ MINGW- ~ 1 \ X86_64 ~ 1.0-P \ mingw64 \ bin \ ld.exe / nologo CMakeFiles \ cmTC_bd131.dir / testCXXCompiler.cxx.obj/out:cmTC_bd131.exe / implib: cmTC_bd131.lib /pdb:cmTC_bd131.pdb /version। .लिब advapi32.lib && cd। " आरसी पास 1: कमांड "rc / fo CMakeFiles \ cmTC_bd131.dir / surf.res CMakeFiles \ cmTC_bd131.dir / default.rc" निम्नलिखित आउटपुट के साथ विफल (कोड 0 से बाहर निकलें)। सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा निंजा: निर्माण बंद कर दिया: सबकुंड विफल रहा। CMake इस परियोजना को सही ढंग से उत्पन्न करने में सक्षम नहीं होगा। कॉल स्टैक (सबसे हालिया कॉल पहले): CMakeLists.txt: 2 (परियोजना) - अधूरा कॉन्फ़िगर करना, त्रुटियां हुईं! "C: / Users / [USER NAME] /source/repos/test_openmp/build-clang-msvc/CMakeFiles/CMakeOutput.log" भी देखें। "C: / Users / [USER NAME] /source/repos/test_openmp/build-clang-msvc/CMakeFiles/CMakeError.log" भी देखें।
- MSVC के अलावा क्लैंग और निन्जा:,
mkdir build-clang-ninja
तबcmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..
(नए बनाए गए फोल्डर से औरPATH
पर्यावरण वैरिएबल को बदलते हुए नॉन-मिसे पीवीसी पहले पाए जाते हैं), लेकिन यह निम्न त्रुटि के साथ विफल हो जाता है:
- CXX संकलक पहचान MSVC जैसी कमांड-लाइन के साथ क्लैग 9.0.0 है - काम करने के लिए जाँच करें CXX कंपाइलर: C: / प्रोग्राम फाइल्स / LLVM / bin / clang-cl.exe - काम करने के लिए जाँच करें CXX कंपाइलर: C: / प्रोग्राम फाइल्स / LLVM / bin / clang-cl.exe - तोड़ा C पर सीमेक एरर: / प्रोग्राम फाइल्स / सीएमके / शेयर / cmake-3.15 / मॉड्यूल / CMakeTestCXXCompiler.cmake: 53 (संदेश): सी ++ संकलक "C: / प्रोग्राम फाइल्स / LLVM / bin / clang-cl.exe" एक साधारण परीक्षण कार्यक्रम संकलित करने में सक्षम नहीं है। यह निम्न आउटपुट के साथ विफल होता है: परिवर्तन करें: C: / उपयोगकर्ता / [USER NAME] / स्रोत / repos / test_openmp / buid-clang-Ninja / CMakeFiles / CMakeTmp रन बिल्ड कमांड (s): C: /Njaja/ninja.exe cmTC_50b73 && [1/2] बिल्डिंग CXX ऑब्जेक्ट CMakeFiles \ cmTC_50b73.dir \ testCXXCompiler.cxx.obj [2/2] CXX निष्पादन योग्य cmTC_50b73.exe को जोड़ना विफल: cmTC_50b73.exe cmd.exe / C "cd। &&" C: \ Program Files \ CMake \ bin \ cmake.exe "-E vs_link_exe --intdir = CMakeFiles \ cmTC_50b73.dir --rc = rc-mt = CMAKE_MT-NOTFOUND - मैनिफ़ेस्ट - CMAKE_LINKER-NOTFOUND / nologo CMakeFiles \ cmTC_50b73.dir \ testCXXCompiler.cxx.obj /out:cmTC_50b73.exe /implib .cmTC_50b73.lib/pdb:cmTC_50b73.pdb/vort/vort/vb= सबसिस्टम: कंसोल कर्नेल 32.लिब user32.lib gdi32.lib वाइनपूल.लिब शेल 32.लिब ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd। " RC पास 1: कमांड "rc / fo CMakeFiles \ cmTC_50b73.dir / surf.res CMakeFiles \ cmTC_50b73.dir / default.rc" निम्नलिखित आउटपुट के साथ विफल (बाहर निकलें कोड 0): सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा निंजा: निर्माण बंद कर दिया: सबकुंड विफल रहा। CMake इस परियोजना को सही ढंग से उत्पन्न करने में सक्षम नहीं होगा। कॉल स्टैक (सबसे हालिया कॉल पहले): CMakeLists.txt: 2 (परियोजना) - अधूरा कॉन्फ़िगर करना, त्रुटियां हुईं! "C: / Users / [USER NAME] /source/repos/test_openmp/buid-clang-ninja/CMakeFiles/CMakeOutput.log" भी देखें। "C: / Users / [USER NAME] /source/repos/test_openmp/buid-clang-ninja/CMakeFiles/CMakeError.log" भी देखें।
क्लैंग के साथ आगे बढ़ने के बारे में कोई विचार? मुझे लगता है कि यह मेरे लिए सबसे अच्छा विकल्प है कि मैं क्या हासिल करना चाहता हूं (ओपनएमपी 4.5 या नए और उत्पादन .lib
और .dll
) के समर्थन के साथ अपने परीक्षण कार्यक्रम को संकलित करें ।
संबंधित पोस्ट / वेबपेज जो मैंने चेक किए हैं लेकिन इसे हल करने के लिए गैर-उपयोगी हैं:
- सीएमके, क्लैंग और निंजा के साथ विंडोज पर सी ++ प्रोजेक्ट का निर्माण
- विंडोज पर CMake, निंजा और क्लैंग के साथ बिल्डिंग
- विंडोज पर क्लैंग के साथ संकलन करने के तरीके , विशेष रूप से लिंकर की स्थापना:
-DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe"
- निंजा जनरेटर का उपयोग करके विंडोज (क्लैंग-सीएल) के लिए सीएमके भवन
- क्लैंग-क्ल उपयोगकर्ता पुस्तिका
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
:। मैं इस नई त्रुटि में खुदाई करूँगा और यदि मुझे कोई उत्तर नहीं मिला तो मैं एक नया प्रश्न पोस्ट करूँगा। धन्यवाद!