Mam mały projekt testowy , który używa OpenMP do równoległości. Moim celem jest skompilowanie go w taki sposób, aby tworzył .dlli .libdla bibliotek (ponieważ mój prawdziwy projekt łączy się z bibliotekami zewnętrznymi dystrybuowanymi przy użyciu tych typów), ze wsparciem dla OpenMP 4.5 lub nowszego i robię to z wiersza poleceń, aby można było to zrobić w oknie dokowanym dla testowanie i sprawdzanie (część dokera jest poza zakresem tego pytania, jest tylko dla odniesienia, dlaczego potrzebuję go do pracy z wiersza poleceń). Mogę skompilować ten projekt z różnymi kompilatorami, z którymi nie jestem zadowolony:
- MSVC:,
mkdir build-msvcnastępniecmake ..(z nowo utworzonego folderu) i na końcucmake --build . --config Release. Kompiluje się dobrze, ale obsługuje tylko OpenMP 2.0, dlatego nie jest dobrą opcją dla mojego prawdziwego projektu. - Intel Parallel Studio:
mkdir build-intelnastępniecmake .. -T "Intel C++ Compiler 19.0"(z nowo utworzonego folderu) i na końcucmake --build . --config Release. Obsługuje OpenMP 5.0, ale jego licencje są dla mnie dość drogie. - MinGW x64 g ++:,
mkdir build-g++następniecmake .. -G "MinGW Makefiles"(z nowo utworzonego folderu) i na konieccmake --build .. Obsługuje OpenMP 4.5, ale ten kompilator nie jest kompatybilny z.lib(o ile wiem), o którym wspomniałem, że jest dla mnie konieczny.
Próbowałem bez powodzenia użyć clang:
- CLANG z MSVC:,
mkdir build-clang-msvca następniecmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..(z nowo utworzonego folderu), ale kończy się niepowodzeniem z następującym błędem:
- Identyfikator kompilatora CXX to Clang 8.0.1 z wierszem poleceń podobnym do MSVC
- Sprawdź działanie kompilatora CXX: C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / Tools / Llvm / bin / clang-cl.exe
- Sprawdź działanie kompilatora CXX: C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / Tools / Llvm / bin / clang-cl.exe - uszkodzony
CMake Błąd w C: / Program Files / CMake / share / cmake-3.15 / Modules / CMakeTestCXXCompiler.cmake: 53 (komunikat):
Kompilator C ++
„C: / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / Tools / Llvm / bin / clang-cl.exe”
nie jest w stanie skompilować prostego programu testowego.
Nie działa z następującymi danymi wyjściowymi:
Zmień katalog: C: / Users / [NAZWA UŻYTKOWNIKA] / source / repos / test_openmp / build-clang-msvc / CMakeFiles / CMakeTmp
Uruchom komendę kompilacji: C: /PROGRA~2/MICROS~1/2019/COMMUN~1/Common7/IDE/COMMON~1/MICROS~1/CMake/Ninja/ninja.exe cmTC_bd131 && [1/2] Budowanie obiektu CXX CMakeFiles \ cmTC_bd131.dir \ testCXXCompiler.cxx.obj
[2/2] Łączenie pliku wykonywalnego CXX cmTC_bd131.exe
FAILED: 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 - manifestuje - 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:0.0 / machine: X86 / debug / INCREMENTAL / subsystem: console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg .lib advapi32.lib && cd. ”
RC Pass 1: polecenie „rc / fo CMakeFiles \ cmTC_bd131.dir / manifest.res CMakeFiles \ cmTC_bd131.dir / manifest.rc” nie powiodło się (kod wyjścia 0) z następującymi danymi wyjściowymi:
System nie może odnaleźć określonego pliku
ninja: build zatrzymany: komenda nie powiodła się.
CMake nie będzie w stanie poprawnie wygenerować tego projektu.
Stos połączeń (najpierw ostatnie połączenie):
CMakeLists.txt: 2 (projekt)
- Konfiguracja niekompletna, wystąpiły błędy!
Zobacz także „C: / Users / [NAZWA UŻYTKOWNIKA] /source/repos/test_openmp/build-clang-msvc/CMakeFiles/CMakeOutput.log”.
Zobacz także „C: / Users / [NAZWA UŻYTKOWNIKA] /source/repos/test_openmp/build-clang-msvc/CMakeFiles/CMakeError.log”.
- Clang i Ninja oprócz MSVC:,
mkdir build-clang-ninjaa następniecmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..(z nowo utworzonego folderu i zmianyPATHzmiennej środowiskowej, aby najpierw nie znaleziono msvc), ale błąd kończy się następująco:
- Identyfikator kompilatora CXX to Clang 9.0.0 z wierszem poleceń podobnym do MSVC
- Sprawdź działanie kompilatora CXX: C: / Program Files / LLVM / bin / clang-cl.exe
- Sprawdź działanie kompilatora CXX: C: / Program Files / LLVM / bin / clang-cl.exe - uszkodzony
CMake Błąd w C: / Program Files / CMake / share / cmake-3.15 / Modules / CMakeTestCXXCompiler.cmake: 53 (komunikat):
Kompilator C ++
„C: / Program Files / LLVM / bin / clang-cl.exe”
nie jest w stanie skompilować prostego programu testowego.
Nie działa z następującymi danymi wyjściowymi:
Zmień katalog: C: / Users / [NAZWA UŻYTKOWNIKA] / source / repos / test_openmp / buid-clang-ninja / CMakeFiles / CMakeTmp
Uruchom komendę kompilacji: C: /Ninja/ninja.exe cmTC_50b73 && [1/2] Budowanie obiektu CXX CMakeFiles \ cmTC_50b73.dir \ testCXXCompiler.cxx.obj
[2/2] Łączenie pliku wykonywalnego CXX cmTC_50b73.exe
FAILED: 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 - manifesty - 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.0 / machine: x64 / debugowanie podsystem: konsola kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd. ”
RC Pass 1: komenda „rc / fo CMakeFiles \ cmTC_50b73.dir / manifest.res CMakeFiles \ cmTC_50b73.dir / manifest.rc” nie powiodła się (kod wyjścia 0) z następującymi danymi wyjściowymi:
System nie może odnaleźć określonego pliku
ninja: build zatrzymany: komenda nie powiodła się.
CMake nie będzie w stanie poprawnie wygenerować tego projektu.
Stos połączeń (najpierw ostatnie połączenie):
CMakeLists.txt: 2 (projekt)
- Konfiguracja niekompletna, wystąpiły błędy!
Zobacz także „C: / Users / [NAZWA UŻYTKOWNIKA] /source/repos/test_openmp/buid-clang-ninja/CMakeFiles/CMakeOutput.log”.
Zobacz także „C: / Users / [NAZWA UŻYTKOWNIKA] /source/repos/test_openmp/buid-clang-ninja/CMakeFiles/CMakeError.log”.
Wszelkie pomysły na kontynuowanie klangu? Myślę, że to moja najlepsza opcja na to, co chcę osiągnąć (skompiluj mój program testowy z obsługą OpenMP 4.5 lub nowszą wersją i produkcją .libi .dll).
Powiązane posty / strony internetowe, które sprawdziłem, ale nie były przydatne do rozwiązania tego:
- Budowanie projektu c ++ w systemie Windows za pomocą CMake, Clang i Ninja
- Budowanie z CMake, Ninja i Clang w systemie Windows
- Sposoby kompilacji z Clangiem w systemie Windows , w szczególności ustawienie konsolidatora:
-DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe" - CMake build dla Windows (clang-cl) przy użyciu Generatora Ninja
- Instrukcja obsługi Clang-cl
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES). Zagłębię się w ten nowy błąd i jeśli nie znajdę odpowiedzi, opublikuję nowe pytanie. Dziękuję Ci!