2013-02-21 1 views
2

vim 플러그인 clang_complete에 필요한 .clang_complete 파일을 생성 할 수 있도록 CMakeLists.txt 파일을 설정하고 싶습니다.CMake 및 clang_complete

일반적으로 매개 변수를 컴파일러에서 제공하는 python 스크립트와 컴파일을위한 모든 매개 변수에 전달하여이 작업을 수행 할 수 있습니다. 공간 절약을 위해 cc_args.py가있는 실제 디렉토리는 생략하고 있습니다.

cc_args.py gcc test.c -o test -I~/IncludeDirs/ 

당신은 또한 메이크업 단계에서이 작업을 수행 할 수 있습니다 ...

make CC='cc_args.py gcc' CXX='cc_args.py g++' 

는 그러나, 나는 확신 얼마나에 CMakeLists.txt 파일 내에서이 설정 (이 가능한 경우) . clang_complete를 설정하고 싶을 때마다이 내용을 입력해야하는 것은 정말 귀찮습니다. 내가 이렇게하는 이유는 CMakeLists.txt 파일을 만드는 데 사용자 지정 스크립트를 사용하는 프로젝트가 여러 개 있기 때문에 각 스크립트를 작성하거나 수동으로 일반 스크립트를 작성해야하기 때문입니다. 피하고 싶다.

나는 지금까지 오류가 발생했습니다 몇 가지 시도했습니다.

CMAKE_CC_COMPILER 및 CMAKE_CXX_COMPILER를 처음으로 비슷한 줄 (예 : "cc_args.py g ++")로 설정해 보았습니다. 여기에 나오는 오류는 컴파일러 (이해할 수 있음)를 찾을 수 없다고 말합니다.

다음으로 시도한 것은 컴파일러 변수를 cc_args.py에 설정하고 실제 컴파일러에 플래그를 추가하는 것입니다. 끔찍한 말로 충분합니다. CMake는 테스트 프로그램을 컴파일 할 수 없다고 말했다. (스크립트는 컴파일러가 아니므로, 테스트는 내가 설정 한 플래그를 사용하지 않는다. 나는 이것에 놀라지 않는다).

그래서 다른 외부 스크립트를 작성하지 않고도이 작업을 수행 할 수있는 방법을 생각할 수있는 사람이 있습니까?

답변

1

나는 "다른 외부 스크립트를 작성하지 않고"당신이 말한 알고 있지만 당신은 단지 한 줄 필요가있다처럼 보인다 :

exec cc_args.py g++ 

을 다음 CMAKE_CXX_COMPILER로 해당 파일을 설정합니다. 빌드를 할 때 CMake의 file() 함수를 사용하여 배포 할 필요가 없다면 한 줄 짜기를 작성할 수도 있습니다.

+0

흠 ... 나는 그것을 줄 것이고 내가 할 수있는 것을 볼 것입니다. 나는 file() 함수가 존재했는지 모르기 때문에 내 문제를 해결할 수있다. – AdmiralJonB

+0

'file()'을 사용하면 효과적 일지 모르지만'project()'를 호출하고'CMAKE_CXX_COMPILER_INIT' 변수를 가리 키도록 설정해야합니다. 일단 CMake에서 컴파일러를 설정하면 컴파일러를 변경할 수 없습니다. – Angew

+0

아, 그게 내가 컴파일러에서 겪어 온 또 다른 문제를 설명해 줄거야. 나는 컴파일러를 설정하는 옵션을 가지고 있었고 실제로 컴파일러를 바꾸지는 못했다. – AdmiralJonB