que precio gui full creator qt qmake moc

precio - que es qt creator



¿Cómo agregar banderas específicas a moc en un proyecto de qmake? (7)

Ver por ejemplo los documentos de Qmake para variables que detallan

  • diez variables diferentes en el patrón QMAKE_CFLAGS_* , y

  • diez variables diferentes en el patrón QMAKE_CXXFLAGS*

y por lo tanto, comenzaría con QMAKE_CXXFLAGS que está documentado como:

QMAKE_CXXFLAGS

Esta variable contiene los indicadores del compilador C ++ que se utilizan al construir un proyecto. El valor de esta variable normalmente se maneja con qmake o qmake.conf y rara vez necesita modificarse. Los indicadores específicos para los modos de depuración y liberación se pueden ajustar modificando las variables QMAKE_CXXFLAGS_DEBUG y QMAKE_CXXFLAGS_RELEASE , respectivamente. Nota: en la plataforma Symbian, esta variable se puede usar para pasar opciones específicas de arquitectura a cada compilador en el sistema de compilación Symbian. Por ejemplo:

QMAKE_CXXFLAGS.CW += -O2 QMAKE_CXXFLAGS.ARMCC += -O0

Para obtener más información, consulte Notas de plataforma de qmake.

Así que comenzaría con

QMAKE_CXXFLAGS += -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED

que puedes agregar a tu archivo .pro .

Recopilo un ejecutable Qt usando qmake && make en el siguiente archivo project.pro :

INCLUDEPATH *= ../../dependencies/boost QT *= opengl xml CONFIG *= qt opengl static TARGET = myexe HEADERS = Viewer.hpp MainWindow.hpp Inspector.hpp SOURCES = main.cpp Viewer.cpp MainWindow.cpp Inspector.cpp

Sin embargo, al compilar, moc asfixia en una macro impulso que no puede analizar. Para evitar este error , necesito pasar el indicador -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED a -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED , pero no puedo hacerlo.

¿Cómo edito mi archivo .pro para pasar una determinada bandera a moc ? (pero no a g++ , como QMAKE_CXXFLAGS hace QMAKE_CXXFLAGS )


Un poco hackish, pero ¿qué pasa si sobrescribe el compilador de moc para que incluya la bandera. En el .pro:

QMAKE_MOC = $$QMAKE_MOC -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED


Hay una actualización de este problema para impulsar 1.53, vea la última publicación aquí :

Necesitamos agregar -DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION también.


En caso de que esté haciendo Ogre3D (OGRE 1.8.1 SDK para Visual C ++ .Net 2010 (32 bits)), utilice QT5 32 bits en lugar de la versión QT5 de 64 bits, pasará.

También considera esto:

#ifndef BOOST_SYSTEM_NO_DEPRECATED #define BOOST_SYSTEM_NO_DEPRECATED 1 #endif

Creo que ha sido compilado (boost incluido) con 32 bits, así que supongo que tengo que tomar src y recompilar (usando mi 64bit), pero esa es otra historia en la que no voy por ahora desde OGRE 1.9 RC 1 SDK para Visual C ++ .Net 2012 ( 64-bit) pronto será lanzado en la versión estable.

Saludos

EDIT 1:

Descargué Qt libraries 4.8.4 para Windows y configuré mi creador de QT (el que viene con QT5 completo y adivina qué ... .Ogre3D funciona como un amuleto cuando se compila en 4.8.4.

Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) Qt libraries 4.8.4 for Windows (VS 2010, 234 MB) OGRE 1.8.1 SDK for Visual C++ .Net 2010 (32-bit)

También lo mencioné para quién está interesado aquí: http://qt-project.org/forums/viewreply/128660/


Para agregar indicadores específicos a moc en un proyecto qmake (qt5.2) necesita:

load(moc) QMAKE_MOC += -DBOOST_INCLUDE_GUARD_GOES_HERE


La mejor manera que encontré para hacer esto se basa en un comentario sobre la solución aceptada de David Faure:

QMAKE_MOC_OPTIONS += -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED

Los otros métodos propuestos que implican load(moc) y manipulan la variable QMAKE_MOC tienen un desafortunado efecto secundario: evitan que qmake agregue automáticamente variables INCLUDEPATH (y tal vez otras) que normalmente estarían en la línea de comandos de INCLUDEPATH , si INCLUDEPATH está configurado después la llamada a load(moc) .

Este enfoque se compone más fácilmente si tiene su configuración de qmake dividida en varios archivos; no es necesario que se asegure de que el cambio a la línea de comando INCLUDEPATH se INCLUDEPATH después de que se INCLUDEPATH todos los directorios INCLUDEPATH .


En mi código en los archivos de encabezado solo tengo:

#ifndef Q_MOC_RUN //Here we include Boost or Ogre headers with Macro #endif

Funciona perfectamente en Qt5 x64 y no necesita recompilar nada.