c++ - compilar - gcc linux
¿Vale la pena usar GCC en Windows para reemplazar MSVC? (7)
Considere el compilador de Intel (o "Compositor", ya que parecen haber llamado a llamarlo) como otra opción. No estoy muy seguro de dónde está su compatibilidad C ++ 11 en comparación con MS (ciertamente tiene lambdas), pero se integra muy bien con VisualStudio (por ejemplo, diferentes proyectos dentro de una solución pueden usar los compiladores Intel o MS) y hay también se han realizado algunos esfuerzos para hacer coincidir las opciones de línea de comandos del compilador de MS.
Actualmente desarrollo en C ++ en Windows, usando Visual Studio 2010. Después del anuncio oficial de C ++ 11, he comenzado a usar algunas de sus características que ya están disponibles en MSVC. Pero, como era de esperar, la gran mayoría de los nuevos cambios no son compatibles.
Pensé que tal vez la próxima versión de Visual Studio agregaría estas nuevas características. Sin embargo, después de leer this , parece que muy poco va a cambiar.
Por lo tanto, tengo curiosidad sobre la posibilidad de usar GCC en Windows en lugar de MSVC, ya que parece que ya es compatible con la gran mayoría de C ++ 11. Por lo que puedo decir, esto significaría usar MinGW (no he visto otras versiones nativas de Windows de GCC). Pero tengo preguntas sobre si valdría la pena intentarlo:
- ¿Se puede utilizar como un reemplazo directo para cl.exe, o implicaría muchos hacks y problemas de compatibilidad para que Visual Studio use un compilador diferente?
- El principal punto de venta para Visual Studio, en mi opinión, es su depurador. ¿Eso todavía se puede usar si usas un compilador diferente?
- Como GCC proviene del mundo * nix, y no es nativo de Windows, ¿existen problemas de calidad del código al crear aplicaciones nativas de Windows, en comparación con el uso del compilador MSVC nativo? (Si importa: la mayoría de mis proyectos son juegos).
- En otras palabras, ¿sufrirá la calidad de mis compilados de un compilador no nativo de Windows?
GCC y MSVC utilizan diferentes convenciones de modificación de nombres para C ++. Los compiladores de C ++ compilados por un compilador no se pueden usar en aplicaciones compiladas con el otro. Creo que esta es la razón principal por la que no vemos un uso más generalizado de gcc en Windows.
MSVC tiene la gran ventaja de contar con un IDE que no tiene igual en Windows, incluido el soporte de depuradores.
La mejor alternativa posible para MinGW sería Code :: Blocks, pero hay mundos intermedios, especialmente con respecto a la finalización del código y al depurador.
Además, MSVC le permite usar algunas cosas exclusivas de Microsoft (MFC, ATL y posiblemente otras) que MinGW no admite, y hace que el uso de GDI + y DirectX sea más sencillo y directo (aunque es posible hacer ambas cosas con MinGW).
Cygwin, como se menciona en otra publicación, tendrá dependencias adicionales y posibles problemas de licencia (la dependencia es GPL, por lo que sus programas también deben estarlo). MinGW no tiene ninguna dependencia o problema de este tipo.
MinGW también compila significativamente más lento que MSVC (aunque los encabezados precompilados ayudan un poco).
A pesar de todo, GCC / MinGW es un compilador de calidad completamente confiable, que en mi opinión supera a cualquier versión disponible hasta la fecha de MSVC en términos de calidad del código generado.
Esto es algo menos pronunciado con las versiones más recientes de MSVC, pero aún son visibles. Especialmente para todo lo relacionado con SSE, intrínsecos y ensamblaje en línea, GCC ha estado aniquilando a MSVC desde entonces (aunque lentamente se están poniendo al día).
El cumplimiento de estándares también es mucho mejor en GCC, que puede ser un arma de doble filo (¡porque puede significar que parte de tu código no se compilará en el compilador más conforme!), Como lo es el soporte de C ++ 11.
MinGW también admite excepciones DW2, que son totalmente incompatibles con el sabor "normal" y ocupan más espacio en el ejecutable, pero en el lado positivo son "prácticamente cero costo" en tiempo de ejecución.
No se puede usar como un reemplazo directo de sustitución para los compiladores de microsoft, para empezar tiene un conjunto enormemente diferente de argumentos de línea de comandos y opciones específicas del compilador.
Puede utilizar MinGW o Cygwin para escribir software pero introducir dependencias adicionales (especialmente en el caso de cygwin).
Una ventaja que a menudo se promociona de gcc over cl es que gcc se puede usar con ccache para acelerar drásticamente las reconstrucciones o distcc para compilar usando otras máquinas como esclavos de compilación.
Quiero agregar algo de información porque el campo puede haber cambiado desde que se hizo la pregunta.
El principal problema para cambiar de MSVC fue la falta de un IDE bueno que se integre perfectamente con MinGW. Visual Studio es una herramienta muy poderosa y fue el único reproductor en Windows durante bastante tiempo. Sin embargo, Jetbrains lanzó una versión de vista previa de su nueva C ++ IDE CLion hace unos días.
El principal beneficio se obtiene cuando se trabaja en aplicaciones multiplataforma. En este caso, una cadena de herramientas basada en GCC puede hacer la vida mucho más fácil. Además, CLion se integra estrechamente con CMake, que también es una gran ventaja en comparación con Visual Studio. Por lo tanto, en mi opinión, vale la pena considerar cambiar a MinGW ahora.
Solo use el plugin visualGDB Visual studio 2017. Puede usar cualquier sabor mingw. 64/32 bit ext TDM-GCC-64 (posix), SysGCC (mingw 64), MinGw
Problema sovled .... visual studio 2017 + cualquier tipo de versión mingw Tiene Linux, Windows, Android, Raspberry Pi, cualquier Linux, compatibilidad con placas de desarrollo, Clang intelisense ... Es increíble. 30 días de prueba.
El soporte C ++ 11 de GCC es bastante fenomenal (y está a la altura de la conformidad con los estándares, ahora que se ha implementado <regex>
).
Si reemplaza su compilador, deberá asegurarse de que cada dependencia pueda compilarse con ese compilador nuevo. No están hechos para ser complementos sustituibles (aunque Clang está trabajando para convertirse de esa manera ).
GCC es un buen compilador y puede producir código que tiene prácticamente el mismo rendimiento, si no mejor, que MSVC. Sin embargo, le faltan algunas características de bajo nivel de Windows.
Además de esto, para responder a sus preguntas:
- Para que VS use GCC como compilador, es muy probable que necesite recurrir a los archivos make o a los pasos de compilación personalizados hasta el final. Sería mucho mejor que compilas desde la línea de comandos y uses CMake o algo similar.
- No puede usar el depurador VS para el código GCC. GCC genera información de depuración compatible con GDB y el formato de depuración VS es propietario, por lo que nada cambiará en esa área en el corto plazo.
- La calidad del código es tan buena como lo desearía. Véase más arriba.
- No, la calidad de su código en realidad aumentará, ya que GCC señalará varias extensiones estándar supuestas que MSVC escondería de usted. Todos los proyectos de código abierto que se pretenden se pueden compilar con GCC.