2010-10-03 11 views
12

Tengo un proyecto en el que estoy trabajando con Qt Creator y estoy intentando que agregue mis archivos de recursos a mis directorios de compilación (salida) automáticamente. Tengo los archivos en el directorio del proyecto, pero no sé cómo editar el archivo * .pro para que incluya archivos de contenido adicionales. (¿Si eso es posible?)Incluyendo archivos de recursos en el directorio de compilación de Qt Creator

¿Alguien sabe cómo obtener los archivos de contenido exactamente como están en mis directorios de salida?

EDIT:

Sólo para que todo el mundo sabe exactamente lo que estoy tratando de hacer ... Quiero copiar automáticamente FFmpeg como un ejecutable en mis directorios de construcción. De esta forma, si el resultado de compilación no existe, se copiará justo antes de que se depure la aplicación.

Estoy tratando de evitar que las operaciones limpias eliminen los recursos y que tenga que copiarlos una y otra vez. Además ... Trabajo en varias computadoras y uso SVN o Dropbox, por lo que quiero mantener mis rutas relativas. Cambiarán cuando me mueva de una computadora a otra.

respuesta final:

CONFIG(release, debug|release) { 
    DESTDIR = release 
} else { 
    DESTDIR = debug 
} 

#for Windows 
win32 { 
    #in Windows, you can use & to separate commands 
    copyfiles.commands += @echo NOW COPYING ADDITIONAL FILE(S) & 
    copyfiles.commands += @call copy ..\\$${TARGET}\\ffmpeg.exe $${DESTDIR}\\ffmpeg.exe 
} 

#for Mac 
macx { 
    #commands would go here if I had them 
} 

QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

Respuesta

11

Si desea copiar automáticamente los archivos en un directorio después de la construcción se puede utilizar una meta posterior construcción.

En el archivo de pro:

win32 { 
    copyfiles.commands = @call copy <from> <to> 
} 
macx { 
    copyfiles.commands = cp <from> <to> 
} 
QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

En lugar de copy <from> <to> es obvio que puede llamar a un archivo/batch script que hace más después construir pasos.

+0

¿Puede y ser pariente? ¿Tienes un ejemplo de eso? – jocull

+0

Por supuesto. El comando ejecutado es solo un comando de shell ordinario que se ejecuta en relación con su directorio de trabajo. – WolfgangA

+1

Si no necesita los recursos hasta la implementación o el tiempo de empaquetado, también puede agregar reglas INSTALL adicionales al archivo .pro. – andref

5

Echa un vistazo a Qt Resource System.

Para añadir el archivo de recursos en su proyecto, usted tiene añadir lo siguiente en su archivo .pro ..

RESOURCES = application.qrc

Ejemplos detallados disponibles en el Qt Docs ..

Una vez añadido en el Pro File, se agregará un archivo separado .qrc en su proyecto Qt con el que puede hacer doble clic y agregar los recursos deseados, como iconos, archivos de traducción, etc.,

Espero que ayude ..

+0

¿No se compilan estos recursos en la salida? Tengo cosas como procesos externos (archivos * .exe) que necesito que estén accesibles en el mismo directorio que mi salida compilada. – jocull

+0

@jocull Sí, el problema es que no se puede acceder directamente a esos archivos cuando se convierten en recursos. Tengo un archivo XML que quiero poder modificar. ¿Cómo resolviste esto de manera portátil? Con diferentes comandos de copia por sistema operativo? – ierax

+0

Sí, eso es lo que terminé teniendo que hacer en el * .pro. Mira la pregunta original, ya que la edité con mi respuesta final. – jocull

1

Ahora es 2012, y ninguno de estos métodos funciona para mí. Me sale este error:

mingw32-make[1]: Leaving directory `C:/src/GL-Texture-build-desktop-Qt_in_PATH_Debug' 
/usr/bin/sh: copy: command not found 
mingw32-make[1]: *** [copyfiles] Error 127 
mingw32-make: *** [debug] Error 2 
00:28:19: The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2. 
Error while building/deploying project GL-Texture (target: Desktop) 
When executing step 'Make' 

Mirando el mensaje, me sorprende ver que está utilizando el shell sh, probablemente a causa de MinGW. De todos modos he resuelto este problema utilizando el equivalente Unix:

CONFIG(release, debug|release) { 
    DESTDIR = release 
} else { 
    DESTDIR = debug 
} 

#for Windows 
win32 { 
    copyfiles.commands += @echo NOW COPYING ADDITIONAL FILES & 
    copyfiles.commands += cp -r ../$${TARGET}/textures $${DESTDIR}/ 
} 

QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

Esto sucede en Windows 7/QT 4.6.3.

Cuestiones relacionadas