2010-09-06 10 views

Respuesta

11

Desde el QT Documentation:

El distribuidor determina se especifican en el archivo .config. El archivo .config es un archivo normal de C++ , antepuesto a todos sus archivos fuente cuando son analizados. utilizar sólo el archivo .config añadir líneas como en el ejemplo a continuación:

#define NAME value 

Es decir, si importa un proyecto llamado MyProject, a continuación, las definiciones pre-procesador deben especificarse en MyProject.config

Para mis proyectos, provoca que el indexador reconozca este proyecto de definición de ancho y cambió el autocompletado para reflejar esto.

+0

No he intentado esto. Ya no trabajo en Qt. Pero creo que por tu respuesta esto podría ser correcto. Por lo tanto, aceptarlo a partir de ahora para que otros lo usen. – Bharathwaaj

+3

Funciona, y es apropiado. –

+1

Esto funciona cuando hago lo que dicen los documentos y "Solo use el archivo .config para agregar líneas como en el ejemplo siguiente". Esperaba que "El archivo .config es un archivo normal de C++" significaba que también podía usar # ifdef/# else/# endif allí, pero daba resultados extraños. Se supone que eso funciona? – anr78

1

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.

+0

no pude encontrar por ejemplo en el entorno Configuración del proyecto uration. – Bharathwaaj

+0

El nombre de la pestaña es "Proyectos". Aquí puede hacer una compilación personalizada agregando su preprocesador. Defina –

+0

No uso el creador de qt para la compilación. Lo uso para indexar – Bharathwaaj

35

Depende :-)

La siguiente es suponiendo que está utilizando proyectos basados ​​qmake:

En primer lugar se puede añadir 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 ponergravámenes de valor en un archivo de encabezado e incluir eso. Eso funciona para todo tipo de proyectos :-)

+1

No, yo no uso qtcreator para construir. No lo quiero solo por su poderosa indexación. – Bharathwaaj

+0

Y mi proyecto no está basado en qmake. – Bharathwaaj

+12

+1 Puede que esto no ayude al póster original, pero este es el éxito principal de "qtcreator define" en google y muchos de nosotros estamos usando qmake y compilando en qtcreator. ¡Gracias! – sage

4

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 a continuación, se puede utilizar en el archivo .rc para crear la materia versión de Windows, donde lo quiere y así como en el código de un menú "Acerca de".

+1

Tuve un problema similar. En bash en la línea de comandos, esto funcionó para mí: 'qmake DEFINES + =" BUILD_DATE = '\' \ "17 de agosto de 2016 \" \ '' "' – cgmb

2

creo que las respuestas iniciales son buenas, pero que requieren que se administra la configuración manualmente mientras que hay maneras para que el IDE manejar esto para usted automáticamente en función de si tiene una versión o configuración de depuración seleccionada.

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

Pasos

Dado que una imagen vale más que mil palabras, aquí está un ejemplo de cómo se defina una macro de depuración para su versión de depuración utilizando Qt Creator 4.3.1:

  1. Asegúrate de que tienes tu Configuración de depuración seleccionada;

Run Configurations

  1. Ir a la sección deProyectos en el menú de la izquierda;
  2. Ir a la sección deConstruir

Projects >> Build

  1. Bajo etapas de la generación, busque los argumentos adicionales cuadro de entrada;
  2. Introduzca sus definiciones de macro (por ejemplo DEBUG para sus #ifdef DEBUG s en el código; en mi caso es __CTS_DEBUG__)

Additional Arguments

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

Resultados

Con la depuración de configuración seleccionados

Debug Config

Con la liberación configuración seleccionada:

Release Config

+1

¡Esto es genial! ¡Gracias! – KGCybeX

Cuestiones relacionadas