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のデフォルト値が表示されています)。