Cómo compilar C++ para Windows con clang en Visual Studio 2015


Por lo que entiendo, Visual Studio 2015 se envía con clang. Primero pensé que esto era solo para aplicaciones Android e iOS, pero de acuerdo con este artículo también debería ser posible usar la interfaz de clang++ para programas de Windows. Sin embargo, no puedo encontrar la opción de acuerdo.

Así que podría explicarme, por favor, cómo puedo cambiar el compilador usado a clang en un proyecto c++ (en VS2015 RC Community Edition).

Author: MikeMB, 2015-07-11

4 answers

A partir de la actualización VS2015 1, puede instalar la plantilla "Clang with Microsoft CodeGen" a través de la ventana Nuevo proyecto, busque Instalado -> Plantillas -> Visual C++ -> Multiplataforma.

Entonces podrá elegir Clang 3.7 con Microsoft CodeGen v140_clang_3_7 Platform Toolset en la página de propiedades de cualquier proyecto de Windows C++.

Clang tiene un conjunto completamente diferente de opciones de línea de comandos que reconoce, por lo que al usar el conjunto de herramientas v140_clang_3_7, las propiedades del proyecto deben esté usando opciones compatibles con Clang, que pueden ser reconocidas como comenzando con - en lugar de /. Por ejemplo, la propiedad Debug Information Format establecida en " Full Debug Information (DWARF2) (-g2 -gdwarf-2)", y Habilite la propiedad Excepciones de C++ establecida en " Yes (-fexceptions)".

Hay más información en esta entrada del blog.

captura de pantalla de la ventana nuevo proyecto

 23
Author: Oktalist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-09 00:18:03

Por lo que entiendo, tanto Clang como GCC se incluyen con los SDK/herramientas crossplatform para Android e iOS para Visual Studio 2015.

De lo que he visto, solo me permite elegir aquellos mientras tengo uno de esos proyectos crossplatform.

Usando el proyecto de plantilla para una aplicación GLES C++ se obtienen las siguientes opciones:

introduzca la descripción de la imagen aquí

Mientras que para una aplicación de Windows C++ se obtiene el cuadro de diálogo a continuación, donde se puede ver que la plataforma de destino de Windows es gris y de solo lectura, lo que significa que probablemente tenga un conjunto de kits de herramientas para cada plataforma de destino, pero simplemente no puede cambiarlo, al menos por ahora. introduzca la descripción de la imagen aquí

No tienes idea de cómo convertir un proyecto VS normal en crossplatform, aunque, y es probable que solo se puede apuntar a Android o iOS fuera de la caja utilizando compiladores de terceros.

Puede ser posible, sin embargo, instalar Clang como otro toolkit de la misma manera que lo son los toolkits de XP. Así que tal vez es sólo una cuestión de alguien jugueteando con él y poniéndolo a disposición como ya está instalado.

 8
Author: Trinidad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-30 02:35:27

Después de leer a través de la publicación vinculada y especialmente los comentarios de nuevo, llegué a entender, que esta no es una característica enviada con VS2015 RC, sino una posible característica futura que podría, por ejemplo, ser enviado en un SP o (más probable) con la próxima versión de VS.

Como menciona sjdowling, lo más cercano que puede hacer en este momento (octubre de 2015, clang 3.7) es descargar e instalar llvm para windows. Esto debería darle una opción de conjunto de herramientas de plataforma LLVM-vs2014. Para mí funciona para programas de prueba simples, pero aparentemente esta versión de "clang-vs" parece que aún no admite excepciones. Sin embargo, de acuerdo con estas notas, ese problema debería resolverse principalmente para clang 3.8.

 3
Author: MikeMB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 00:10:06

Mientras las soluciones anteriores funcionan, requieren que haya instalado clang, que está desactivado de forma predeterminada en la instalación de visual studio 2015. La respuesta aceptada muestra cómo instalarlo, aunque la página siguiente le pedirá que cierre visual studio desde el que está ejecutando el nuevo proyecto.

Si alguien se pregunta cómo instalar clang porque no aparece en su lista, aquí hay otra solución:

  1. Panel de control- > Programas- > Programas y Características.
  2. Correcto haga clic en "Microsoft Visual Studio Enterprise 2015" (o "Microsoft Visual
  3. Studio 15 Preview" si tiene la vista previa de la próxima versión de Visual Studio instalado)
  4. Haga clic en"Cambiar"
  5. Haga clic en"Modificar"
  6. Seleccione "Clang with Microsoft CodeGen" – La versión de marzo de 2016.

Https://blogs.msdn.microsoft.com/vcblog/2016/03/31/clang-with-microsoft-codegen-march-2016-released/

 0
Author: marsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-11 15:34:19