chacham15
Para simplificar la situación, digamos que hay 2 archivos: core.cpp
y main.cpp
.
core.cpp
contiene la funcionalidad del programa y main.cpp
contiene lo basico main()
implementación.
Quiero Qt (usando qmake y los archivos .pro) para
- primera construcción
core.a
y entonces - usa eso y
main.cpp
para construirmain.exe
.
¿Cómo configuro esto en el archivo qmake?
Masci
Diseño del sistema de archivos:
MyProject
|_ myproject.pro
|_ core
|_ core.cpp
|_ core.h
|_ core.pro
|_ app
|_ main.cpp
|_ app.pro
miproyecto.pro:
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = core \
app
app.depends = core
core.pro:
TEMPLATE = lib
CONFIG += staticlib
HEADERS = core.h
SOURCES = core.cpp
aplicación.pro:
TEMPLATE = app
SOURCES = main.cpp
LIBS += -L../core -lcore
TARGET = ../app-exe # move executable one dire up
-
Nitpick: Presionar reproducir da como resultado:
Failed to start program. Path or permissions wrong?
. ¿Cómo puedo solucionar esto? (Aparentemente está buscando el ejecutable en el directorio base)– chacham15
5 de abril de 2012 a las 22:38
-
Simplemente mueva el ejecutable construido un directorio hacia arriba con TARGET var, vea la respuesta actualizada
– Masci
6 de abril de 2012 a las 7:34
-
INCLUDEPATH += ../core/
también debe exigirse enapp.pro
¿Correcto?– Jorge Leitao
31 de mayo de 2016 a las 4:35
-
Cómo manejar el caso donde
core.h
incluye algo de una biblioteca Qt en particular, por ejemploQT += websockets
? no queremosapp.pro
tener que declarar dependencias explícitas en bibliotecas que solo se extraen indirectamente…– Tomás
31 de agosto de 2016 a las 9:24
Si está utilizando recursos en su biblioteca estática, también debe importarlos en su aplicación. Q_INIT_RESOURCE
es la forma de importar un archivo de recursos a la aplicación.
Suponga que tiene un archivo de recursos con el nombre de archivo como myResources.qrc
en biblioteca estática. Luego, debe inicializar esto en la aplicación como se indica a continuación:
QApplication a(argc, argv);
Q_INIT_RESOURCE(resources); //Magic is here.
MainWindow w;
w.show();
a.exec();
El archivo .pro podría modificarse como se indica a continuación para el gran ejemplo dado por Masci:
TEMPLATE = lib
CONFIG += staticlib
HEADERS = core.h
SOURCES = core.cpp
RESOURCES += myResources.qrc