Open haeeun125 opened 7 months ago
CMake로 정확히 어떤 코드를 구성 및 빌드하신 건가요? 컴파일러 코드를 다시 빌드하신 건가요?
아까는 ./src/lib/opt에 있는 CMakeLists.txt에 패스를 등록하고 테스트를 해보려고 add_opt_pass함수와 test를 적용해보다가 버전이 14.0.0이라는 에러가 처음으로 발생했습니다. 실행한 command는 다음과 같습니다. cd build ctest 버전이 낮다는 에러를 처음 보고, 분명히 전에는 프로젝트 컴파일이 잘 되었는데 이상해서 다시 cmake -GNinja -Bbuild 커맨드를 실행했을 때 CMake Error at CMakeLists.txt:9 (find_package): Could not find a configuration file for package "LLVM" that is compatible with requested version "18.1.0".
The following configuration files were considered but not accepted:
/usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.0
/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.0
-- Configuring incomplete, errors occurred! 위와 같은 에러가 발생했습니다. 제가 9번째 줄에 find_package(LLVM 18.1.0 REQUIRED CONFIG) 라는 라인을 추가했고, 어제는 분명히 이 라인을 포함한 상태에서 컴파일이 잘 되었었습니다. 그래서 버전을 확인해보니 clang --version 이 14.0.0으로 나옵니다.
그리고 저도 이상해서 지금 다시 cmake -GNinja -Bbuild를 실행해보니 또 에러 없이 컴파일이 됩니다.
문의드리고 싶은 부분은 1) 제가 필요 없는 라인을 추가해서 에러가 발생했던 걸까요? 그렇다면 지금은 왜 컴파일이 잘 되는 걸까요? 2) 일단 저는 제공해주신 스크립트로 llvm을 설치했는데 clang --version이 14.0.0으로 나오는 원인이 뭘까요?
CMake를 이용한 빌드를 구성할 때, 정확히 어떤 LLVM을 사용할 것인지 명시해주지 않으면 구성할 때마다 그때그때 다른 directory를 찾거나 이전에 찾았던 directory를 캐싱할 수 있습니다.
현재 컴파일러 리포지토리와 같이 제공된 빌드 스크립트를 (compile.sh
) 보시면 -DLLVM_ROOT=
과 같은 식으로 사용할 LLVM을 정확히 명시합니다. 기존에 캐싱된 directory를 지우기 위해 build
directory를 삭제하시고, LLVM_ROOT
CMake 변수를 설정해서 빌드를 구성해보시기 바랍니다.
이해했습니다 감사합니다 그런데 버전이 18.1.0이 아닌 14.0.0으로 나오는 이유는 무엇일까요?
출력된 메시지를 보면 모종의 이유로 패키지 매니저를 통해 LLVM 14 버전이 설치된 적이 있고, 이게 구성 시에 잡힌 것 같습니다.
감사합니다.
분명히 llvm을 잘 설치해서 CTest를 구현하고 test를 만들고 있던 중이었습니다. 그런데 오늘 cmake -Bbuild를 해서 보니 갑자기 llvm 버전이 14.0.0이라고 에러가 발생하였습니다. 그 이전까지는 빌드가 잘 되었는데 갑자기 버전 에러가 발생하였습니다. 그래서 홈 디렉토리에 있는 llvm을 삭제했다가 다시 설치했는데 계속 14.0.0버전으로 나옵니다. 버전이 왜 다운그레이드 되는 건지, 그리고 install을 다시 해도 여전히 llvm버전이 14.0.0이라고 나오는데 어떻게 업그레이드 할 수 있을지 문의드립니다. 추가적으로, cmake에서도 버전이 3.22.1로 나오는 비슷한 버전 문제가 있었는데 삭제했다가 다시 설치하니까 3.28.3버전으로 다시 업그레이드 되었습니다.