ฉันมีโครงการทดสอบขนาดเล็กที่ใช้ 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). ฉันจะขุดลงในข้อผิดพลาดใหม่นี้และหากฉันไม่พบคำตอบฉันจะโพสต์คำถามใหม่ ขอบคุณ!