2012-12-13 4 views
11

저는 cmake가 g ++로 내 cpp 코드를 작성하도록하고 있습니다. 기본적으로 clang을 대신 사용합니다. GCC와 g ++ (성공)에 대한 cmake -D CMAKE_CXX_COMPILER=g++ ../src/CMakeLists.txt 후 cmake 검사를하지만, 그럼에도 불구하고 make VERBOSE=1 수익률 Cmake는 -D CMAKE_CXX_COMPILER = g ++을지지하지 않습니다.

/usr/bin/c++  -o CMakeFiles/trial_cpp.dir/trial.cpp.o -c "/Users/Kuba/Code/Sketchpad/Trial  project/src/trial.cpp" 
Linking CXX executable trial_cpp 
/opt/etlocal/bin/cmake -E cmake_link_script CMakeFiles/trial_cpp.dir/link.txt --verbose=1 
/usr/bin/c++ -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/trial_cpp.dir/trial.cpp.o -o trial_cpp 

이는/usr/빈/C++되지는/usr/빈 호출로

/내가 동의 g ++는 여전히 사용 : 그래서 사용 그 소리. 어떤 생각이 어떤 문제입니까? 나는 g ++을 가지고 있으며/usr/bin /에 있다는 것을 알고있다. 나는 맥 OS X 10.8.2

+3

아마 어리석은 질문이지만 많은 사람들이 잊어 버립니다. cmake를 해당 구성 옵션으로 실행하기 전에 빌드 디렉토리의 전체 내용을 제거 했습니까? 해당 변수가 주어진 빌드 디렉토리 (자동 또는 수동)에 대해 한 번 설정되면 이후 실행시 무시되므로 첫 번째 실행시에만 옵션을 사용해야하며 첫 번째 실행에서만 옵션을 사용해야합니다. – John5342

+0

@ John5342 - 그 트릭을 했어! 나는 cmake 초보자 다. 그래서 build dir을 깨끗하게 할 필요성에 대해 몰랐다. 고맙습니다. – Puchatek

+0

나는 우연히 정확했기 때문에 소스를 포함한 적절한 답으로 추가했습니다. 처음 cmake를 배웠을 때 설명서와 인용 된 페이지가 매우 유용하다는 것을 발견했습니다. – John5342

답변

12

CMAKE_CXX_COMPILER은 cmake가 주어진 빌드 디렉토리에서 실행되는 첫 번째 시간을 설정할 수 있습니다. 후속 실행에서는 무시됩니다. CMAKE_CXX_COMPILER를 변경하려면 먼저 빌드 디렉토리의 내용을 삭제 한 다음 해당 옵션으로 cmake를 다시 실행해야합니다.

출처 : http://www.cmake.org/Wiki/CMake_Useful_Variables

나는 잠재적으로 모든 것을 무효화 할 나중에 변경하면 이미 cmake 어쨌든 처음부터 시작해야 할 것입니다 수 있도록 구성 검사를 포함한 내장하기 때문에 첫 번째 실행에 그 변수를 사용하는 추론 믿습니다.

+0

감사합니다 - 이것은 몇 번 나에게있어. cmake에 '깨끗한'옵션이 있으면 좋을 것입니다. – ccook

1

을 실행하는거야 나는이 대신처럼 수행

CXX=/usr/bin/g++ cmake ../src/CMakeLists.txt 
+0

echo $ CXX yeilds/usr/bin/g ++,하지만 컴파일 할 때 여전히/usr/bin/C++가 사용됩니다 : | – Puchatek