[Interest] [CMake] Problems with CMake and static Qt plugins

norulez at me.com norulez at me.com
Sun Mar 4 12:53:58 CET 2012


@Michael: This was a copy/paste failure

@Thiago: QT_STATICPLUGIN does the trick

Another mistake from me was to use a different name for Q_IMPORT_PLUGIN and for Q_EXPORT_PLUGIN2.

One more hint, if someone would make a static plugin is to use the QPluginLoader::staticInstances() function.

Thanks to all

Best Regards
NoRulez

Am 04.03.2012 um 00:07 schrieb Michael Hertling <mhertling at online.de>:

> On 03/02/2012 02:48 PM, NoRulez wrote:
>> Hello,
>> 
>> I use Qt 4.8.0 from the QtSDK and Iwant to generate a static qt plugin.
>> In my main.cpp I have the following:
>> 
>> 
>> #include<QApplication>
>> #include<QtPlugin>
>> 
>> Q_IMPORT_PLUGIN(Local)
>> 
>> intmain(intargc,char*argv[]){
>> QApplicationapp(argc,argv);
>> 
>>     .
>>     .
>>     .
>>        return  app.exec();
>> 
>> }
>> 
>> The corresponding CMakeLists.txt for the LocalPlugin looks like the following:
>> 
>> SET(LOCALPLUGIN_HEADERS
>> 
>>     LocalPlugin.h
>> 
>> )
>> 
>> SET(LOCALPLUGIN_SOURCES
>> 
>>     LocalPlugin.cpp
>> 
>> )
>> 
>> 
>> SET(QT_USE_QTGUITRUE)
>> SET(QT_USE_QTPLUGINTRUE)
>> 
>> QT4_AUTOMOC(${LOCALPLUGIN_SOURCES})
>> QT4_WRAP_CPP(LOCALPLUGIN_MOC${LOCALPLUGIN_HEADERS})
>> 
>> ADD_LIBRARY(Local  STATIC  ${LOCALPLUGIN_HEADERS}  ${LOCALPLUGIN_SOURCES}  ${LOCALPLUGIN_MOC})
>> 
>> TARGET_LINK_LIBRARIES(Local  ${QT_LIBRARIES})
>> 
>> 
>> The corresponding CMakeLists.txt for the main app looks like the following:
>> 
>> SET(QT_USE_QTMAINTRUE)
>> 
>> SET(QT_USE_QTGUI  TRUE)
>> 
>> ADD_EXECUTABLE(MyApp WIN32  ${APP_SOURCES}  ${APP_RCC}  MyApp.rc)
>> TARGET_LINK_LIBRARIES(MyAppLocal  ${QT_LIBRARIES})
>> 
>> When I compile it I get the following error:
>> In function `StaticLocalPluginInstance': undefined reference to `qt_plugin_instance_Local()'
>> 
>> Please, could anybody help me to get it working?
> 
> Did you INCLUDE(${QT_USE_FILE}) in the correct place, i.e. after
> setting the QT_USE_QT* variables? QT_LIBRARIES is populated in
> that file.
> 
> Moreover, the lines
> 
> SET(QT_USE_QTGUITRUE)
> SET(QT_USE_QTMAINTRUE)
> SET(QT_USE_QTPLUGINTRUE)
> QT4_WRAP_CPP(LOCALPLUGIN_MOC${LOCALPLUGIN_HEADERS})
> 
> are obviously missing blanks - just typos in your report?
> 
> Regards,
> 
> Michael
> --
> 
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake



More information about the Interest mailing list