c++ - meaning - install clang ubuntu
En cmake, ¿cómo puedo probar si el compilador es Clang? (3)
El código fuente del motor OGRE 3D usa la siguiente check :
if (CMAKE_CXX_COMPILER MATCHES ".*clang")
set(CMAKE_COMPILER_IS_CLANGXX 1)
endif ()
Tenemos un conjunto de scripts de compilación CMake de plataforma cruzada , y apoyamos la construcción con MSVC y GCC .
Estamos probando Clang , pero no sé cómo probar si el compilador es Clang con nuestro script CMake.
¿Qué debo probar para ver si el compilador es Clang o no? Actualmente estamos usando CMAKE_COMPILER_IS_GNU<LANG>
y CMAKE_COMPILER_IS_GNU<LANG>
para probar MSVC y GCC, respectivamente.
Solo para evitar cualquier error de ortografía, estoy usando esto:
if (CMAKE_CXX_COMPILER_ID MATCHES "[cC][lL][aA][nN][gG]") #Case insensitive match
set(IS_CLANG_BUILD true)
else ()
set(IS_CLANG_BUILD false)
endif ()
Para hacer la caja de expresiones regulares insensible, intenté todo here sin éxito (no parece ser compatible con CMake).
Un control confiable es usar las CMAKE_<LANG>_COMPILER_ID
. Por ejemplo, para verificar el compilador C ++:
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# using Clang
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# using GCC
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
# using Intel C++
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# using Visual Studio C++
endif()
Estos también funcionan correctamente si se utiliza un envoltorio de compilador como ccache .
A partir de CMake 3.0.0, el valor CMAKE_<LANG>_COMPILER_ID
para Clang proporcionado por Apple ahora es AppleClang
. Para probar tanto el Clang provisto por Apple como el Clang normal, use la siguiente condición:
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# using regular Clang or AppleClang
endif()
También vea la descripción de la política de AppleClang .