c++ qt qt4 webkit qtwebkit

c++ - ¿Es posible construir una biblioteca de Qt estática con webkit habilitado? ¿Y cómo?



qt4 qtwebkit (5)

Bueno, Lou Franco tiene razón, usar la LGPL y compilar estáticamente no cumple realmente con la LGPL. Lo que hacen la mayoría de los "usuarios" o desarrolladores de Qt es compilar dinámicamente, dividir sus bibliotecas "propias compiladas" en el directorio de la aplicación. Esto está bien con la LGPL, siempre y cuando no haya cambiado ningún código en Qt / QtWebKit / WebKit y no haya proporcionado los cambios en la versión anterior.

Traté de construir una biblioteca estática de Qt con el siguiente comando:

./configure --prefix=/usr/local/qt --static --accessibility --multimedia --audio-backend --svg --webkit --javascript-jit --script --scripttools --declarative --dbus --debug

Pero recibí un mensaje que decía:

WARNING: Using static linking will disable the WebKit module.

¿Es posible construir una biblioteca de Qt estática con todos los módulos habilitados? ¿y cómo?

Gracias


Casi imposible. Webkit utiliza los archivos make independientes de los makefiles generados por la herramienta de configuración. Puede verificar src/3rdparty/webkit/source usted mismo.

Si intentó compilar Qt static con webkit, encontrará un error que dice no puede encontrar -lwebcore. De hecho, el webcore.a se genera en src/3rdparty/webkit/source/webcore/release , también lo hace -ljscore. Pero si los copia en / lib yourslef, el error de enlace siempre aparece.

Intenté editar makefiles de webcore y jscore adding -static, pero no funcionó en absoluto.

Lamentablemente, eso es todo lo que tengo ahora.


Para Qt 4.8.3 tuve que parchar los archivos .pro para crear un único QtWebKit en lugar de bibliotecas WebKit y JavaScriptCore separadas. El enlazador se confunde porque hay interdependencias entre las dos bibliotecas.

No estoy seguro si un enfoque similar funcionará para su Qt 4.7.1.

No voy a mencionar los problemas de licencia.

diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf index d60533e..6a7ffa7 100644 --- a/mkspecs/common/linux.conf +++ b/mkspecs/common/linux.conf @@ -7,8 +7,8 @@ QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD QMAKE_INCDIR = QMAKE_LIBDIR = -QMAKE_INCDIR_X11 = /usr/X11R6/include -QMAKE_LIBDIR_X11 = /usr/X11R6/lib +QMAKE_INCDIR_X11 = /usr/include/X11 +QMAKE_LIBDIR_X11 = /usr/lib/X11 QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS] QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS] QMAKE_INCDIR_OPENGL = /usr/X11R6/include diff --git a/mkspecs/linux-g++-64/qmake.conf b/mkspecs/linux-g++-64/qmake.conf index 222f6b7..3780295 100644 --- a/mkspecs/linux-g++-64/qmake.conf +++ b/mkspecs/linux-g++-64/qmake.conf @@ -20,7 +20,7 @@ include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) -QMAKE_LIBDIR_X11 = /usr/X11R6/lib64 -QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64 +QMAKE_LIBDIR_X11 = /usr/lib/X11 +QMAKE_LIBDIR_OPENGL = /usr/lib/X11 load(qt_config) diff --git a/src/3rdparty/webkit/Source/WebKit.pro b/src/3rdparty/webkit/Source/WebKit.pro index 9be0f4a..c1e575d 100644 --- a/src/3rdparty/webkit/Source/WebKit.pro +++ b/src/3rdparty/webkit/Source/WebKit.pro @@ -3,14 +3,9 @@ CONFIG += ordered include(WebKit.pri) -!v8 { - exists($$PWD/JavaScriptCore/JavaScriptCore.pro): SUBDIRS += JavaScriptCore/JavaScriptCore.pro - exists($$PWD/JavaScriptCore/jsc.pro): SUBDIRS += JavaScriptCore/jsc.pro -} webkit2:exists($$PWD/WebKit2/WebKit2.pro): SUBDIRS += WebKit2/WebKit2.pro -SUBDIRS += WebCore SUBDIRS += WebKit/qt/QtWebKit.pro webkit2 { diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro index 847f6f4..e2daf24 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro +++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro @@ -2,7 +2,6 @@ CONFIG += building-libs CONFIG += depend_includepath -TARGET = QtWebKit TEMPLATE = lib


Puede ser porque algunas partes son LGPL. Por lo tanto, probablemente sea posible, pero la LGPL significa que debe proporcionar el código fuente o el código compilado para que el usuario final pueda volver a vincular su versión.

Si no está implementando el resultado a nadie, entonces probablemente podría hacerlo y cumplir.

Sin embargo, tendrás que editar la construcción para hacerlo, ya que parece que cumplen con LGPL por defecto.


No tiene nada que ver con los problemas LGPL, ya que su aplicación podría ser de código abierto y con licencia de una manera que sería compatible con la LGPL.

Aparentemente, está vinculado WebKit no está soportado por razones técnicas. (Algunos compiladores parecen no estar contentos con eso). La secuencia de comandos de compilación se ha actualizado en la confirmación 4221d629e2cf37ee8c5ba7cb595b05ab8c82f113 para evitarla explícitamente:

Se eliminó el soporte para la vinculación estática de QtWebKit. La conexión estática de WebKit ya no se admitirá en Qt 4.7, por lo que este compromiso se asegura de que se mencione en la documentación y que configure deshabilita WebKit si se solicita el enlace estático de Qt.

https://www.qt.gitorious.org/qt/qt/commit/4221d629e2cf37ee8c5ba7cb595b05ab8c82f113

Puede o no funcionar con tu compilador, pero sospecho que el equipo de Qt no quería tomarse la molestia de mantener eso para todas las arquitecturas oficialmente compatibles.