【发布时间】:2011-10-25 06:12:30
【问题描述】:
我有许多使用 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 中)?
另外,使用clang而不是gcc编译时是否需要使用llvm-*程序而不是系统默认值?有什么区别?
【问题讨论】: