병렬화에 OpenMP를 사용 하는 작은 테스트 프로젝트 가 있습니다. 내 목표는 생산 있도록 컴파일하는 것입니다 .dll
및 .lib
이에 대한 고정 표시기에서 수행 할 수 있도록 (외부 라이브러리 내 실제 프로젝트 링크가이 유형을 사용하여 분산하기 때문에)의 OpenMP 4.5 이상을 지원, 라이브러리 및 명령 줄에서 그것을 할 테스트 및 검사 (도커 부분은이 질문의 범위를 벗어났습니다. 명령 줄에서 작업 해야하는 이유에 대한 참조 일뿐입니다). 이 프로젝트를 내가 좋아하지 않는 다른 컴파일러로 컴파일 할 수 있습니다.
- 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를 지원하지만이 컴파일러는.lib
내가 이미 알고있는 한 (필자가 아는 한) 호환되지 않습니다 .
clang을 성공적으로 사용하려고 시도했습니다.
- MSVC에서 CLANG :
mkdir build-clang-msvc
을 누른 다음cmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..
(새로 만든 폴더에서) 다음 오류로 실패합니다.
-CXX 컴파일러 식별은 MSVC와 같은 명령 줄을 사용하는 Clang 8.0.1입니다. -CXX 컴파일러 작동 확인 : C : / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / Tools / Llvm / bin / clang-cl.exe -CXX 컴파일러 작동 확인 : C : / Program Files (x86) / Microsoft Visual Studio / 2019 / Community / VC / Tools / Llvm / bin / clang-cl.exe-깨진 C : / Program Files / CMake / share / cmake-3.15 / Modules / CMakeTestCXXCompiler.cmake : 53에서 CMake 오류 (메시지) : C ++ 컴파일러 "C : / 프로그램 파일 (x86) / Microsoft Visual Studio / 2019 / Community / VC / Tools / Llvm / bin / clang-cl.exe" 간단한 테스트 프로그램을 컴파일 할 수 없습니다. 다음 출력으로 실패합니다. Dir 변경 : C : / Users / [USER NAME] / source / repos / test_openmp / build-clang-msvc / CMakeFiles / CMakeTmp 빌드 명령 실행 : C : /PROGRA~2/MICROS~1/2019/COMMUN~1/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 실행 파일 cmcm_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 /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 comdlg32 .lib advapi32.lib && cd. " RC Pass 1 : 다음 출력으로 "rc / fo CMakeFiles \ cmTC_bd131.dir / manifest.res CMakeFiles \ cmTC_bd131.dir / manifest.rc"명령이 실패했습니다 (종료 코드 0). 시스템이 지정된 파일을 찾을 수 없습니다 ninja : 빌드 중지 : 하위 명령이 실패했습니다. 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
,하지만 다음과 같은 오류와 함께 실패 비 MSVC가 먼저 발견되도록 환경 변수) :
-CXX 컴파일러 식별은 MSVC와 같은 명령 줄이있는 Clang 9.0.0입니다. -CXX 컴파일러 작동 확인 : C : / Program Files / LLVM / bin / clang-cl.exe -CXX 컴파일러 작동 확인 : C : / Program Files / LLVM / bin / clang-cl.exe-고장 C : / Program Files / CMake / share / cmake-3.15 / Modules / CMakeTestCXXCompiler.cmake : 53에서 CMake 오류 (메시지) : C ++ 컴파일러 "C : / Program Files / LLVM / bin / clang-cl.exe" 간단한 테스트 프로그램을 컴파일 할 수 없습니다. 다음 출력으로 실패합니다. Dir 변경 : C : / Users / [USER NAME] / source / repos / test_openmp / buid-clang-ninja / CMakeFiles / CMakeTmp 빌드 명령 실행 : C : /Ninja/ninja.exe cmTC_50b73 && [1/2] CXX 객체 생성 CMakeFiles \ cmTC_50b73.dir \ testCXXCompiler.cxx.obj [2/2] CXX 실행 파일 cmcm_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 /version:0.0 / machine : x64 / debug / INCREMENTAL 하위 시스템 : 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는이 프로젝트를 올바르게 생성 할 수 없습니다. 호출 스택 (가장 최근 호출) : 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
).
내가 확인했지만 이것을 해결하는 데 유용하지 않은 관련 게시물 / 웹 페이지 :
- CMake, Clang 및 Ninja를 사용하여 Windows에서 C ++ 프로젝트 빌드
- Windows에서 CMake, Ninja 및 Clang으로 빌드
- Windows 에서 Clang으로 컴파일하는 방법 , 특히 링커를 설정하는 방법 :
-DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe"
- Ninja Generator를 사용하여 Windows 용 CMake 빌드 (clang-cl)
- Clang-cl 사용자 설명서
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
있습니다. 이 새로운 오류를 파헤 치고 답을 찾지 못하면 새로운 질문을 게시 할 것입니다. 감사합니다!