ฉันมีโครงการทดสอบขนาดเล็กที่ใช้ OpenMP สำหรับการขนาน เป้าหมายของฉันคือการรวบรวมมันเพื่อผลิต.dll
และ.lib
สำหรับห้องสมุด (เพราะโครงการจริงของฉันเชื่อมโยงไปยังห้องสมุดภายนอกที่กระจายโดยใช้ประเภทเหล่านี้) ด้วยการสนับสนุน OpenMP 4.5 หรือใหม่กว่าและทำจากบรรทัดคำสั่งเพื่อให้สามารถทำได้บนนักเทียบท่าสำหรับ การทดสอบและตรวจสอบ (ส่วนนักเทียบท่าอยู่นอกขอบเขตของคำถามนี้มันเป็นเพียงสำหรับการอ้างอิงในสาเหตุที่ฉันต้องการให้มันทำงานจากบรรทัดคำสั่ง) ฉันสามารถรวบรวมโครงการนี้ด้วยคอมไพเลอร์ต่าง ๆ ที่ฉันไม่มีความสุข:
- MSVC:
mkdir build-msvc
แล้วcmake ..
(จากโฟลเดอร์ที่สร้างขึ้นใหม่)cmake --build . --config Release
และในที่สุด สิ่งนี้รวบรวมได้ดี แต่รองรับ OpenMP 2.0 เท่านั้นดังนั้นจึงไม่ใช่ตัวเลือกที่ดีสำหรับโครงการจริงของฉัน - Intel Parallel Studio:
mkdir build-intel
แล้วcmake .. -T "Intel C++ Compiler 19.0"
(จากโฟลเดอร์ที่สร้างขึ้นใหม่)cmake --build . --config Release
และในที่สุด สิ่งนี้สนับสนุน OpenMP 5.0 แต่ลิขสิทธิ์ของฉันค่อนข้างแพงสำหรับฉัน - MinGW x 64 กรัม ++:
mkdir build-g++
แล้วcmake .. -G "MinGW Makefiles"
(จากโฟลเดอร์ที่สร้างขึ้นใหม่)cmake --build .
และในที่สุด รองรับ OpenMP 4.5 แต่คอมไพเลอร์ตัวนี้ไม่สามารถใช้ร่วมกันได้.lib
(เท่าที่ฉันรู้) ซึ่งฉันได้กล่าวไปแล้วเป็นสิ่งจำเป็นสำหรับฉัน
ฉันได้ลองใช้ clang ไม่สำเร็จ:
- CLANG จาก MSVC:
mkdir build-clang-msvc
จากนั้นcmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..
(จากโฟลเดอร์ที่สร้างขึ้นใหม่) แต่ล้มเหลวด้วยข้อผิดพลาดต่อไปนี้:
- รหัสคอมไพเลอร์ CXX คือ Clang 8.0.1 พร้อมกับบรรทัดคำสั่งเหมือน MSVC - ตรวจสอบคอมไพเลอร์ CXX ที่ใช้งานได้: C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / เครื่องมือ / Llvm / bin / clang-cl.exe - ตรวจสอบคอมไพเลอร์ CXX ที่ใช้งานได้: C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / เครื่องมือ / Llvm / bin / clang-cl.exe - เสียหาย ข้อผิดพลาดของ CMake ที่ C: / ไฟล์โปรแกรม / CMake / share / cmake-3.15 / Modules / CMakeTestCXXCompiler.cmake: 53 (ข้อความ): คอมไพเลอร์ C ++ "C: / ไฟล์โปรแกรม (x86) / Microsoft Visual Studio / 2019 / ชุมชน / VC / เครื่องมือ / Llvm / bin / clang-cl.exe" ไม่สามารถคอมไพล์โปรแกรมทดสอบอย่างง่ายได้ มันล้มเหลวด้วยผลลัพธ์ต่อไปนี้: เปลี่ยน Dir: C: / Users / [USER NAME] / source / repos / test_openmp / build-clang-msvc / CMakeFiles / CMakeTmp รันคำสั่ง Build การสร้างวัตถุ 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 = rc --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 /versionOUT.0 / machine: X86 / debug / INCREMENTAL / ระบบย่อย: คอนโซล kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib ole3232l .lib advapi32.lib && cd. " RC Pass 1: คำสั่ง "rc / fo CMakeFiles \ cmTC_bd131.dir / manifest.res CMakeFiles \ cmTC_bd131.dir / manifest.rc" ล้มเหลว (รหัสทางออก 0) ด้วยเอาต์พุตต่อไปนี้: ระบบไม่พบแฟ้มที่ระบุ ninja: บิลด์หยุดทำงาน: คำสั่งย่อยล้มเหลว CMake จะไม่สามารถสร้างโครงการนี้ได้อย่างถูกต้อง Call Stack (โทรล่าสุดก่อน): 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
ตัวแปรสภาพแวดล้อมดังนั้นจึงไม่พบ msvc ก่อน) แต่ล้มเหลวด้วยข้อผิดพลาดต่อไปนี้:
- รหัสคอมไพเลอร์ CXX คือ Clang 9.0.0 พร้อมบรรทัดคำสั่งเหมือน MSVC - ตรวจสอบคอมไพเลอร์ CXX ที่ใช้งานได้: C: / Program Files / LLVM / bin / clang-cl.exe - ตรวจสอบคอมไพเลอร์ CXX ที่ใช้งานได้: C: / Program Files / LLVM / bin / clang-cl.exe - เสีย ข้อผิดพลาดของ CMake ที่ C: / ไฟล์โปรแกรม / CMake / share / cmake-3.15 / Modules / CMakeTestCXXCompiler.cmake: 53 (ข้อความ): คอมไพเลอร์ C ++ "C: / ไฟล์โปรแกรม / LLVM / bin / clang-cl.exe" ไม่สามารถคอมไพล์โปรแกรมทดสอบอย่างง่ายได้ มันล้มเหลวด้วยผลลัพธ์ต่อไปนี้: เปลี่ยน Dir: C: / Users / [ชื่อผู้ใช้] / แหล่งที่มา / repos / test_openmp / buid-clang-ninja / CMakeFiles / CMakeTmp เรียกใช้คำสั่ง Build: C: /Ninja/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:cmb73.pdb ระบบย่อย: console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd " RC Pass 1: คำสั่ง "rc / fo CMakeFiles \ cmTC_50b73.dir / manifest.res CMakeFiles \ cmTC_50b73.dir / manifest.rc" ล้มเหลว (รหัสทางออก 0) ด้วยเอาต์พุตต่อไปนี้: ระบบไม่พบแฟ้มที่ระบุ ninja: บิลด์หยุดทำงาน: คำสั่งย่อยล้มเหลว CMake จะไม่สามารถสร้างโครงการนี้ได้อย่างถูกต้อง Call Stack (โทรล่าสุดก่อน): 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"
ความคิดใด ๆ เกี่ยวกับวิธีการดำเนินการกับเสียงดังกราว? ฉันคิดว่ามันเป็นตัวเลือกที่ดีที่สุดของฉันสำหรับสิ่งที่ฉันต้องการบรรลุ (รวบรวมโปรแกรมทดสอบของฉันด้วยการสนับสนุน OpenMP 4.5 หรือใหม่กว่าและผลิต.lib
และ.dll
)
โพสต์ / เว็บเพจที่เกี่ยวข้องที่ฉันได้ตรวจสอบแล้ว แต่ไม่ได้มีประโยชน์ในการแก้ปัญหานี้:
- สร้างโครงการ c ++ บน Windows ด้วย CMake, Clang และ Ninja
- สร้างด้วย CMake, Ninja และ Clang บน Windows
- วิธีรวบรวมกับเสียงดังกราวบน Windowsโดยเฉพาะการตั้งค่าลิงเกอร์:
-DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe"
- CMake สร้างสำหรับ Windows (เสียงดังกราว) โดยใช้ Ninja Generator
- คู่มือผู้ใช้ Clang-cl
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
. ฉันจะขุดลงในข้อผิดพลาดใหม่นี้และหากฉันไม่พบคำตอบฉันจะโพสต์คำถามใหม่ ขอบคุณ!