Saya punya proyek uji kecil yang menggunakan OpenMP untuk paralelisasi. Target saya adalah untuk mengkompilasinya sehingga menghasilkan .dll
dan .lib
untuk perpustakaan (karena tautan proyek saya yang sebenarnya ke perpustakaan eksternal yang didistribusikan menggunakan jenis ini), dengan dukungan untuk OpenMP 4.5 atau yang lebih baru dan melakukannya dari baris perintah sehingga dapat dilakukan pada buruh pelabuhan untuk menguji dan memeriksa (bagian buruh pelabuhan keluar dari ruang lingkup pertanyaan ini, itu hanya untuk referensi mengapa saya membutuhkannya untuk bekerja dari baris perintah). Saya dapat mengkompilasi proyek ini dengan kompiler yang berbeda dengan yang saya tidak senang:
- MSVC:,
mkdir build-msvc
lalucmake ..
(dari folder yang baru dibuat) dan akhirnyacmake --build . --config Release
. Ini mengkompilasi dengan baik tetapi hanya mendukung OpenMP 2.0, oleh karena itu bukan pilihan yang baik untuk proyek nyata saya. - Intel Parallel Studio:,
mkdir build-intel
lalucmake .. -T "Intel C++ Compiler 19.0"
(dari folder yang baru dibuat) dan akhirnyacmake --build . --config Release
. Ini mendukung OpenMP 5.0 tetapi lisensinya cukup mahal bagi saya. - MinGW x64 g ++:,
mkdir build-g++
lalucmake .. -G "MinGW Makefiles"
(dari folder yang baru dibuat) dan akhirnyacmake --build .
. Ini mendukung OpenMP 4.5 tetapi kompiler ini tidak kompatibel dengan.lib
(sejauh yang saya tahu) yang telah saya sebutkan diperlukan untuk saya.
Saya telah mencoba tanpa berhasil menggunakan dentang:
- CLANG dari MSVC:,
mkdir build-clang-msvc
thencmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..
(dari folder yang baru dibuat), tetapi gagal dengan kesalahan berikut:
- Identifikasi kompiler CXX adalah Dentang 8.0.1 dengan baris perintah seperti MSVC - Periksa apakah kompiler CXX berfungsi: C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Komunitas / VC / Tools / Llvm / bin / clang-cl.exe - Periksa apakah kompiler CXX berfungsi: C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Komunitas / VC / Tools / Llvm / bin / clang-cl.exe - rusak Kesalahan CMake di C: / Program Files / CMake / share / cmake-3.15 / Modul / CMakeTestCXXCompiler.cmake: 53 (pesan): Kompiler C ++ "C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Komunitas / VC / Alat / Llvm / bin / clang-cl.exe" tidak dapat menyusun program pengujian sederhana. Gagal dengan output berikut: Ubah Dir: C: / Pengguna / [NAMA PENGGUNA] / sumber / repos / test_openmp / build-clang-msvc / CMakeFiles / CMakeTmp Jalankan Bangun Perintah: C: /PROGRA ~ 2/MICROS ~ 1/2019/COMMUN ~ 1/Common7/IDE/COMMON ~ 1/MICROS ~1/CMake/Ninja/ninja.exe cmTC_bd131 && [1/2] Membangun objek CXX CMakeFiles \ cmTC_bd131.dir \ testCXXCompiler.cxx.obj [2/2] Menghubungkan cmX yang dapat dieksekusi cmTC_bd131.exe GAGAL: 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 - manifes - 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 /versiion.0.0 / mesin: X86 / debug / INCREMENTAL / subsistem: konsol kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32 .lib advapi32.lib && cd. " RC Pass 1: perintah "rc / fo CMakeFiles \ cmTC_bd131.dir / manifest.res CMakeFiles \ cmTC_bd131.dir / manifest.rc" gagal (kode keluar 0) dengan output berikut: Sistem tidak dapat menemukan berkas yang dicari ninja: build stops: subcommand gagal. CMake tidak akan dapat menghasilkan proyek ini dengan benar. Penumpukan Panggilan (panggilan terakhir): CMakeLists.txt: 2 (proyek) - Mengonfigurasi tidak lengkap, terjadi kesalahan! Lihat juga "C: / Pengguna / [NAMA PENGGUNA] /source/repos/test_openmp/build-clang-msvc/CMakeFiles/CMakeOutput.log". Lihat juga "C: / Users / [USER NAME] /source/repos/test_openmp/build-clang-msvc/CMakeFiles/CMakeError.log".
- Dentang dan Ninja terpisah dari MSVC:,
mkdir build-clang-ninja
lalucmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..
(dari folder yang baru dibuat dan mengubahPATH
variabel lingkungan sehingga non-msvc ditemukan terlebih dahulu), tetapi gagal dengan kesalahan berikut:
- Identifikasi kompiler CXX adalah Dentang 9.0.0 dengan baris perintah seperti MSVC - Periksa apakah kompiler CXX berfungsi: C: / Program Files / LLVM / bin / clang-cl.exe - Periksa apakah kompiler CXX berfungsi: C: / Program Files / LLVM / bin / clang-cl.exe - rusak Kesalahan CMake di C: / Program Files / CMake / share / cmake-3.15 / Modul / CMakeTestCXXCompiler.cmake: 53 (pesan): Kompiler C ++ "C: / Program Files / LLVM / bin / clang-cl.exe" tidak dapat menyusun program pengujian sederhana. Gagal dengan output berikut: Ubah Dir: C: / Pengguna / [NAMA PENGGUNA] / sumber / repos / test_openmp / buid-clang-ninja / CMakeFiles / CMakeTmp Jalankan Bangun Perintah: C: /Ninja/ninja.exe cmTC_50b73 && [1/2] Membangun objek CXX CMakeFiles \ cmTC_50b73.dir \ testCXXCompiler.cxx.obj [2/2] Menautkan cmX yang dapat dieksekusi cmTC_50b73.exe GAGAL: 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 - manifes - CMAKE_LINKER-NOTFOUND / nologo CMakeFiles \ cmTC_50b73.dir \ testCXXCompiler.cxx.obj /out:cmTC_50b73.exe /implib:cmTC_50b73.lib /pdb:cmTC_50b73.pdb / version /.0 / mesin: debug subsistem: konsol kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd. " RC Pass 1: perintah "rc / fo CMakeFiles \ cmTC_50b73.dir / manifest.res CMakeFiles \ cmTC_50b73.dir / manifest.rc" gagal (kode keluar 0) dengan output berikut: Sistem tidak dapat menemukan berkas yang dicari ninja: build stops: subcommand gagal. CMake tidak akan dapat menghasilkan proyek ini dengan benar. Penumpukan Panggilan (panggilan terakhir): CMakeLists.txt: 2 (proyek) - Mengonfigurasi tidak lengkap, terjadi kesalahan! Lihat juga "C: / Pengguna / [NAMA PENGGUNA] /source/repos/test_openmp/buid-clang-ninja/CMakeFiles/CMakeOutput.log". Lihat juga "C: / Pengguna / [NAMA PENGGUNA] /source/repos/test_openmp/buid-clang-ninja/CMakeFiles/CMakeError.log".
Ada ide tentang bagaimana untuk melanjutkan dentang? Saya pikir itu adalah pilihan terbaik saya untuk apa yang ingin saya capai (mengkompilasi program pengujian saya dengan dukungan untuk OpenMP 4.5 atau yang lebih baru dan memproduksi .lib
dan .dll
).
Posting terkait / halaman web yang telah saya periksa tetapi tidak berguna untuk menyelesaikan ini:
- Membangun proyek c ++ pada Windows dengan CMake, Dentang dan Ninja
- Membangun dengan CMake, Ninja dan Dentang di Windows
- Cara untuk Mengkompilasi dengan Dentang pada Windows , secara khusus mengatur tautan:
-DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe"
- Bangunan CMake untuk Windows (clang-cl) menggunakan Ninja Generator
- Manual pengguna clang-cl
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
. Saya akan menggali kesalahan baru ini dan jika saya tidak menemukan jawaban saya akan memposting pertanyaan baru. Terima kasih!