tag qt qt-creator

tag - ¿Cómo agregar definiciones de procesamiento previo(macros) al creador de qt?



title tag html (5)

Creo que las respuestas iniciales son buenas, pero requieren que administres tu configuración manualmente, mientras que hay formas de dejar que el IDE administre esto automáticamente en función de si tienes una configuración de versión o depuración seleccionada.

Este bit puede ser redundante, pero tenga en cuenta que esto funcionará para usted solo si está utilizando el IDE para la construcción . Obviamente, si este no es el caso, necesitará una solución diferente.

Pasos

Como las imágenes valen más que mil palabras, aquí hay un ejemplo de cómo define una macro de depuración para su compilación de depuración usando Qt Creator 4.3.1:

  1. Asegúrese de seleccionar su configuración de depuración ;

  1. Vaya a la sección Proyectos en el menú de la izquierda;
  2. Ve a la sección Build

  1. En los pasos de compilación , busque el cuadro de entrada de argumentos adicionales ;
  2. Ingrese sus definiciones de macro (por ejemplo, #ifdef DEBUG para su #ifdef DEBUG s en el código, en mi caso es __CTS_DEBUG__ )

La macro ahora solo se definirá cuando uses tu configuración de depuración; cuando eliges tu configuración de liberación (ver paso 1), quedará sin definir automáticamente y se eliminará tu código de depuración condicionalmente compilado, como se muestra en las imágenes a continuación, que es justo lo que siempre quisiste.

Resultados

Con la configuración de depuración seleccionada

Con la configuración de lanzamiento seleccionada:

En Eclipse hay una opción para especificar el pre procesamiento define (macros #ifdef) a un proyecto usando la opción Símbolos en Rutas y Símbolos. Esto ayuda a la indexación efectiva de código que es multiplataforma. ¿Hay alguna opción para proporcionar estos en el creador de Qt?


De la documentación de QT :

Las definiciones se especifican en el archivo .config. El archivo .config es un archivo regular de C ++, antepuesto a todos sus archivos fuente cuando se analizan. Solo use el archivo .config para agregar líneas como en el siguiente ejemplo:

#define NAME value

Es decir, si importa un proyecto llamado MyProject, las definiciones del preprocesador deben especificarse en MyProject.config

Para mis proyectos, provoca que el indexador reconozca este proyecto de definición y modificó la autocompletación para reflejar esto.


Depende:-)

Lo siguiente es asumir que está utilizando proyectos basados ​​en qmake:

Primero puede agregar DEFINES += SOME_DEFINE=value en su archivo .pro. Eso se recoge dentro del creador y cuando se construye en la línea de comando y también debe aparecer cuando se crea un proyecto MSVC o XCode desde el archivo .pro.

Luego puede agregar DEFINES += SOME_DEFINE=value a la llamada qmake que Qt Creator emitirá al configurar el proyecto. Eso sucede en el modo de proyecto, configuraciones de compilación, pasos de QMake.

Finalmente, puede poner #define SOME_DEFINE gravámenes de valor en un archivo de encabezado e incluir eso. Eso funciona para todo tipo de proyectos :-)


Puede definir algunos PREPROCESADOR en la configuración del Proyecto en QtCreator. No tengo QtCreator aquí, pero recuerdo que hay una pestaña para la configuración del proyecto.


Quería especificar una cadena #define en el archivo .pro, pero mi código terminó con el contenido de la cadena sin las comillas. Tuve que escapar de las citas, y luego escapar de las escapatorias para obtener un par de citas que duraran todo el camino hasta mi código. Esto es porque qmake quita un conjunto de escapes y algunas comillas, luego la línea de comando quita el resto. Esto funcionó para mí:

DEFINES += "VERSION=/"///"0.1.0///"/""

En Windows, esta cadena de VERSIÓN se puede usar en el archivo .rc para crear las cosas de la versión donde Windows lo quiera y también en el código de un menú "Acerca de".