precio - qt creator ubuntu
Las mejores prácticas para el desarrollo "multiplataforma" con Qt (6)
De acuerdo con qt.nokia.com , Qt es una "plataforma multiplataforma de aplicaciones y UI", que le permite "escribir código una vez para dirigirse a múltiples plataformas". El Qt SDK es un "entorno de desarrollo completo" que contiene "las herramientas que necesita para crear aplicaciones multiplataforma con Qt en una sola instalación". Qt Creator es un "IDE multiplataforma" que "se ejecuta en sistemas operativos de escritorio Windows, Linux / X11 y Mac OS X, y permite a los desarrolladores crear aplicaciones para múltiples plataformas de escritorio y dispositivos móviles".
Las palabras mágicas "compilación cruzada" no se mencionan explícitamente. Sin embargo, un lector ingenuo podría ser perdonado por inferir que puede descargar el Qt SDK (incluido Qt Creator) para cualquier sistema host que esté utilizando para el desarrollo, crear un proyecto y escribir algún código desde el que pueda generar fácilmente ejecutables para Windows. Linux, Mac, etc. Por "fácil" tengo en mente algo así como marcar algunas casillas de verificación en un cuadro de diálogo de configuración de construcción y presionar el botón "Crear".
¡Todavía estoy buscando esas casillas de verificación! Mientras tanto, he encontrado varias publicaciones, aquí y en otras partes, sobre la instalación de un compilador cruzado, la instalación de binarios adicionales, la reescritura de su archivo qmake, etc. Desde el marketing, esperaba que la compilación cruzada ya estuviera completa y directamente respaldada. una instalación "lista para usar" de las herramientas IDE y SDK. ¿Me estoy perdiendo algo obvio?
Si no, tengo máquinas de desarrollo disponibles con los tres sistemas operativos. ¿Debo simplemente instalar Qt Creator en las tres plataformas? Si hago eso, ¿puedo esperar tomar un proyecto Qt (o tal vez solo el código fuente) que he desarrollado usando Qt Creator para, digamos, Windows, copiarlo en mi máquina Mac o Linux y compilarlo? allí usando la versión de Qt Creator para esa plataforma, sin toparse con algunos problemas importantes? ¿Podría ser esa la mejor práctica para usar Qt para crear ejecutables para plataformas múltiples, frente a la instalación de herramientas de compilación cruzada en un único host de desarrollo?
El lema de Qt es:
Escribe una vez, compila en todas partes.
Con esto en mente, Qt no ofrece oficialmente ninguna solución lista para usar para la compilación cruzada de aplicaciones Qt desde una plataforma específica a otras plataformas diferentes. Aunque es definitivamente factible, si se invierte mucho tiempo y trabajo, la buena práctica común de Qt le sugerirá que construya su aplicación Qt directamente en la plataforma objetivo. Eso significa, construya su objetivo de Windows para su aplicación, una máquina de Windows, su objetivo de Mac en una máquina de Mac y un destino de Linux en una, usted acertó (:-)), una máquina de Linux.
Así es "Escribe una vez, compila en todas partes", en mi opinión es una combinación de palabras muy bien elegida. De lo contrario, la línea de la etiqueta podría haber sido, "Escribir una vez, compilar para todo".
Volviendo al tema original, ni siquiera necesita diferentes máquinas físicas para cada una de las plataformas de destino, ya que en esta época de buenas soluciones de virtualización puede configurar fácilmente un par de máquinas virtuales y crear su aplicación en diferentes plataformas desde la misma máquina física.
En cuanto a las otras preguntas no respondidas directamente de su pregunta:
¿Debo simplemente instalar Qt Creator en las tres plataformas? Si hago eso, ¿puedo esperar tomar un proyecto Qt (o tal vez solo el código fuente) que he desarrollado usando Qt Creator para, digamos, Windows, copiarlo en mi máquina Mac o Linux y compilarlo? allí usando la versión de Qt Creator para esa plataforma, sin toparse con algunos problemas importantes?
Sí. Los problemas menores son cosas como conseguir que sus aplicaciones sean ejecutables / iconos binarios directamente en las tres plataformas principales (Windows, Linux, Mac) o la integración avanzada de Mac Dock o la barra de la bandeja Problemas de integración entre los dos. Estos problemas se pueden manejar sin romper la característica de plataforma cruzada de su código, encapsulando adecuadamente el código específico de su plataforma en directivas de compilación como #define para, p. Ej. También recomiendo hacerlo para cada otro código específico de plataforma que requiera su aplicación o si hará un uso extensivo del código específico de la plataforma, separando bloques enteros del código específico de la plataforma relacionada en varias bibliotecas dinámicas cargadas (o bibliotecas compartidas) específicas para cada plataforma pero exportar la misma interfaz genérica abstracta y cargar / vincular a ellos según sea necesario.
¿Podría ser esa la mejor práctica para usar Qt para crear ejecutables para plataformas múltiples, frente a la instalación de herramientas de compilación cruzada en un único host de desarrollo?
Debe usar Qt SDK (Qt Creator o las herramientas de línea de comandos) para construir su aplicación siempre que sea posible, ya que herramientas como qmake se encargarán de manejar los archivos .moc manualmente en sus Makefiles. Pero si eso se vuelve imposible por varias razones, por ejemplo. como su empresa que impone el desarrollo de Visual Studio (¿plataforma cruzada?), hay muchos tutoriales sobre cómo manejar compilaciones basadas en Qt utilizando sistemas de compilación como MS Visual Studio, GNU autotools o CMake. Aunque recomendaría seguir con qmake, que es un buen generador de make makefile y fácilmente adaptable a los hacks específicos de plataforma que pueda necesitar para que su aplicación funcione correctamente, en lugar de usar un sistema de compilación que sea más cómodo para los hacks específicos de la plataforma. y luego tratando de acomodar las necesidades de Qt para esos sistemas de compilación. Después de todo, si desarrolla su aplicación en Qt por razones multiplataforma, entonces Qt debería ser el marco principal para su aplicación y no el API / código específico de la plataforma o las bibliotecas de terceros que pueda utilizar.
Espero haber sido lo suficientemente claro y útil.
PD: También soy bienvenido a sugerencias o correcciones / adiciones con respecto a lo que escribí en los comentarios.
La última vez que estaba usando Qt, y fue hace años, tenías que compilar en cada plataforma para la que querías un binario. Por supuesto que podría compilar de forma cruzada, pero creo que depende de usted configurar tal cosa.
Tal vez alguien más haga una mejor pregunta, pero no creo que te estés perdiendo nada.
La compilación cruzada se usa generalmente para desarrollar software en un sistema Linux host y compilar para un sistema Linux objetivo. Durante años utilicé un sistema Linux que se ejecuta en un x86 con X11 (KDE) para compilar de forma cruzada nuestra aplicación Qt para un sistema ARM integrado que ejecuta Qt Embedded. Si usa aplicaciones móviles, es probable que compile de forma cruzada. Puede cruzar la compilación en un sistema Windows, por supuesto. Todo lo que realmente necesitas es el compilador cruzado. Como gcc está disponible en el código fuente, los compiladores cruzados de gcc son bastante comunes. Para realizar una compilación cruzada con Qt, necesita una mkspec para qmake que especifique qué compiladores usar.
Su último párrafo indica que probablemente no podrá hacer este tipo de compilación cruzada: puede hacerlo en su máquina Windows para Linux o probablemente para Mac, y probablemente pueda hacerlo en Linux para Windows si lo hace Está usando la versión mingw de Qt en Windows, pero nunca compilará una aplicación basada en el compilador de Microsoft en Linux o Mac para Windows.
En pocas palabras: haz lo que indicaste. Obtenga su fuente en cada plataforma de destino y compílela allí.
No creo que haya una configuración de compilación cruzada.
Sobre la portabilidad del proyecto completo, diría "casi" porque encontré algunas fallas técnicas molestas. Sin embargo, su código fuente será 100% portátil y recompilarlo en otra plataforma solo requerirá algunos trucos en .pro.
Lo que hago es trabajar con una sola plataforma (Linux) y de vez en cuando compilar usando mi máquina Windows y mi Mac Mini. Con lo que normalmente termino luchando son solo algunas directivas sobre dónde encontrar bibliotecas externas o incluir archivos. Además, cuando trabajo en Mac, tengo que copiar los archivos externos en el paquete de la aplicación para que el programa pueda encontrarlos.
No sé acerca de los sistemas Linux. Pero para desarrollar la aplicación Qt dirigida a Mac OS X y Windows, necesita una máquina de desarrollo para cada uno de ellos. No hay compilación cruzada para los dos.
Qt es multiplataforma en el sentido de que los mismos archivos fuente pueden crear aplicaciones para diferentes plataformas. Con todas las VM disponibles, una configuración de máquina (física) para desarrollar y construir múltiples objetivos no debería ser demasiado problema. De hecho, así es exactamente como estoy trabajando en mi proyecto actual, que apunta tanto a Mac como a Windows.
Puede usar MinGW
para realizar compilaciones cruzadas en Linux para Windows. La compilación cruzada a Mac no es posible debido a problemas técnicos. No hay una manera fácil de hacerlo desde la GUI, pero here hay un buen procedimiento para compilar QtWebKit para Windows. Eso se puede aplicar a cualquier proyecto de Qt.