programing tip

CMake에 대한 새 GCC 경로를 지정하는 방법

itbloger 2020. 8. 25. 07:44
반응형

CMake에 대한 새 GCC 경로를 지정하는 방법


내 OS는 경로에 기본 gcc가있는 centos입니다 /usr/bin/gcc. 하지만 오래되었고 새로운 버전의 gcc가 필요합니다. 그래서 새 경로에 새 버전을 설치합니다 /usr/local/bin/gcc.

그러나 내가 실행할 때 cmake여전히 이전 버전의 gcc path ( /usr/bin/gcc) 사용합니다. gcc를 new path ( /usr/local/bin/gcc)에 어떻게 지정할 수 있습니까 ?

나는 덮어 시도 /usr/bin/gcc와 함께 /usr/local/bin/gcc,하지만 작동하지.


덮어 쓰지 말고 cmake를 호출하기 전에 CMAKE_C_COMPILER내보내기 CC(및 CXX)합니다.

export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++
cmake /path/to/your/project
make

내보내기는 프로젝트를 처음 구성 할 때 한 번만 수행하면됩니다. 그러면 해당 값이 CMake 캐시에서 읽 힙니다.


업데이트 : CMAKE_C(XX)_COMPILERJake의 의견 이후에 재정의하지 않는 이유에 대한 더 긴 설명

CMAKE_C(XX)_COMPILER두 가지 주된 이유로 값을 재정의 하지 않는 것이 좋습니다 . CMake의 캐시와 잘 작동하지 않고 컴파일러 검사 및 도구 감지를 중단하기 때문입니다.

set명령을 사용할 때 세 가지 옵션이 있습니다.

  • 캐시없이 일반 변수 생성
  • 캐시 사용, 캐시 된 변수 생성
  • 강제 캐시, 구성 할 때 항상 캐시 값 강제 적용

에 대한 세 가지 가능한 호출에 대해 어떻게되는지 보겠습니다 set.

캐시없이

set(CMAKE_C_COMPILER /usr/bin/clang)
set(CMAKE_CXX_COMPILER /usr/bin/clang++)

이렇게 CMAKE_C(XX)_COMPILER하면 동일한 이름의 캐시 변수를 숨기는 "일반"변수 만듭니다 . 즉, 이제 컴파일러가 빌드 스크립트에 하드 코딩되어 사용자 지정 값을 제공 할 수 없습니다. 컴파일러가 다른 여러 빌드 환경이있는 경우 문제가됩니다. 다른 컴파일러를 사용하고 싶을 때마다 스크립트를 업데이트 할 수 있지만 처음에는 CMake를 사용하는 가치가 제거됩니다.

좋아, 그럼 캐시를 업데이트하자 ...

캐시 포함

set(CMAKE_C_COMPILER /usr/bin/clang CACHE PATH "")
set(CMAKE_CXX_COMPILER /usr/bin/clang++ CACHE PATH "")

이 버전은 "작동하지 않습니다". CMAKE_C(XX)_COMPILER당신이 그것을 강제하지 않는 한 변수는 캐시에 이미이 업데이트되지 것입니다.

아 ... 힘을 써 보자, 그럼 ...

강제 캐시

set(CMAKE_C_COMPILER /usr/bin/clang CACHE PATH "" FORCE)
set(CMAKE_CXX_COMPILER /usr/bin/clang++ CACHE PATH "" FORCE)

이것은 "일반"변수 버전과 거의 동일하며, 유일한 차이점은 사용자가 볼 수 있도록 값이 캐시에 설정된다는 것입니다. 그러나 모든 변경 사항은 set명령 으로 덮어 씁니다 .

컴파일러 검사 및 도구 깨기

구성 프로세스의 초기에 CMake는 컴파일러에서 검사를 수행합니다. 작동합니까? 실행 파일을 생성 할 수 있습니까? 등 또한, 관련 도구를 감지처럼 컴파일러를 사용 ar하고 ranlib. 스크립트에서 컴파일러 값을 재정의하면 "너무 늦었습니다", 모든 검사 및 탐지가 이미 수행되었습니다.

사용하는 경우 예를 들어, 기본 컴파일러로 gcc가 내 컴퓨터에 set명령을하는 /usr/bin/clang, ar로 설정됩니다 /usr/bin/gcc-ar-7. CMake를 실행하기 전에 내보내기를 사용하면 /usr/lib/llvm-3.8/bin/llvm-ar.


이 질문은 꽤 오래되었지만 여전히 Google 검색에 나타납니다. 받아 들여진 질문은 더 이상 저에게 효과가 없었고 나이가 들어간 것 같습니다. cmake에 대한 최신 정보는 cmake FAQ에 기록되어 있습니다.

컴파일러의 경로를 변경하는 방법에는 여러 가지가 있습니다. 한 가지 방법은

CMAKE_FOO_COMPILER사용하여 명령 줄 에서 적절한 변수를 유효한 컴파일러 이름 또는 전체 경로로 설정합니다 cmake -D. 예를 들면 :

cmake -G "Your Generator" -D CMAKE_C_COMPILER=gcc-4.2 -D CMAKE_CXX_COMPILER=g++-4.2 path/to/your/source

대신 gcc-4.2다음 path/to/your/compiler과 같이 쓸 수 있습니다.

 cmake -D CMAKE_C_COMPILER=/path/to/gcc/bin/gcc -D CMAKE_CXX_COMPILER=/path/to/gcc/bin/g++ .

CMAKE_C_COMPILER새 경로로 설정 하십시오.

여기를 참조하십시오 : http://www.cmake.org/Wiki/CMake_Useful_Variables


내보내기는 사용할 GCC / G ++ 버전을 구체적으로 지정해야합니다. 사용자가 여러 컴파일러 버전을 가지고 있으면 성공적으로 컴파일되지 않기 때문입니다.

 export CC=path_of_gcc/gcc-version
 export CXX=path_of_g++/g++-version
 cmake  path_of_project_contain_CMakeList.txt
 make 

In case project use C++11 this can be handled by using -std=C++-11 flag in CMakeList.txt


An alternative solution is to configure your project through cmake-gui, starting from a clean build directory. Among the options you have available at the beginning, there's the possibility to choose the exact path to the compilers

참고URL : https://stackoverflow.com/questions/17275348/how-to-specify-new-gcc-path-for-cmake

반응형