CMake를 사용하여 빌드 된 많은 프로젝트가 있으며 GCC 또는 Clang / LLVM을 사용하여 쉽게 컴파일하여 컴파일 할 수 있기를 바랍니다. Clang을 사용하려면 다음을 설정해야한다고 생각합니다 (잘못하면 수정하십시오!).
SET (CMAKE_C_COMPILER "/usr/bin/clang")
SET (CMAKE_C_FLAGS "-Wall -std=c99")
SET (CMAKE_C_FLAGS_DEBUG "-g")
SET (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
SET (CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG")
SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
SET (CMAKE_CXX_COMPILER "/usr/bin/clang++")
SET (CMAKE_CXX_FLAGS "-Wall")
SET (CMAKE_CXX_FLAGS_DEBUG "-g")
SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
SET (CMAKE_AR "/usr/bin/llvm-ar")
SET (CMAKE_LINKER "/usr/bin/llvm-ld")
SET (CMAKE_NM "/usr/bin/llvm-nm")
SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")
SET (CMAKE_RANLIB "/usr/bin/llvm-ranlib")
이러한 변수와 기본 GCC 변수 사이를 쉽게 전환 할 수있는 방법이 있습니까 (예 : 프로젝트의 특정 변수가 아니라 프로젝트 전체의 CMakeLists.txt에 추가하는 것이 아니라) 시스템 전체의 변경 사항이 있습니까?
또한 llvm-*
gcc 대신 clang을 사용하여 컴파일 할 때 시스템 기본값 대신 프로그램 을 사용해야 합니까? 차이점이 뭐야?
CMAKE_USER_MAKE_RULES_OVERRIDE
작품을 제외한 모든 것을 따랐습니다 . 파일이 무시되는 것처럼 보입니다 (즉 , 재정의 파일에서CMAKE_C_FLAGS_RELEASE
설정되어 있음에도 불구하고-O4
기본값-O3 -DNDEBUG
은 cmake입니다).