Название: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 17:29 Всем категорический привет.
Может не в ту ветку, но так как я новичек в с++ вообще и в qt в частности поэтому сюда. Потихоньку изучаю qt и в частности добрался до написания плагинов к своему приложению. Изучил примеры из Макса Шлее (про plugandpaintplugins то же знаю, но для начала что попроще), все замечательно получается, в т.ч. и собственные плагины. И вот здесь же прочитал про CMake. Решил попробовать, вроде все работает, пока не попробовал собрать плагин и приложение работающее с ним. Смысл такой, что все собирается без ошибок, но не работает. И размер исполняемого файла и библиотеки сильно отличается от таковых собранных с помощью qmake. Прилагаю исходники из Макса Шлее со своими CMakeLists.txt (лежат в директориях build, как заставить cmake складывать результат в другое место пока не разобрался, так что из каталога сборки приходится копировать результат в корень ручками). Помогите с этим разобраться. qt 4.6.2 ось: windows xp pro компилятор: MinGW P.S. Все что нашел на эту тему в сети перепробовал, ничего не помогает :( Название: Re: CMake и сборка plugin Отправлено: Пантер от Март 03, 2010, 17:52 Вот подправил.
Название: Re: CMake и сборка plugin Отправлено: Rcus от Март 03, 2010, 17:53 А как именно не работает? У меня все нормально собралось и заработало после копирования по образу .pro DESTDIR
Разница в размере файлов объясняется разными флагами компилятора: например в режиме RelWithDebInfo CMake по-умолчанию использует оптимизацию -O2, но не определяет -DQT_NO_DEBUG, в режиме Release используется -O3, что порой увеличивает размер получаемого файла. Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 18:22 Вот подправил. А у меня все равно не работает :-( Какие у вас версии qt, cmake, и mingw? Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 18:25 А как именно не работает? Не работает в смысле плагин не подгружается, не добавляются в меню его функции. А размер у меня сильно отличается, раза в два. Название: Re: CMake и сборка plugin Отправлено: BRE от Март 03, 2010, 18:26 У QPluginLoader есть метод: QString QPluginLoader::errorString () const
Что он пишет? P.S. У меня, кстати, тоже все работает. ::) Название: Re: CMake и сборка plugin Отправлено: Пантер от Март 03, 2010, 18:26 Как ты компилишь? Нужно в каталоге с первым CMakeLists создать каталог (пусть будет build), зайти в него, сделать cmake && make, когда все скомпилится, исполняемый файл окажется в каталоге build/bin, а плугин build/bin/plugins. Что именно не получается?
Косяк в винде, добавь в первый цмэйк SET (CMAKE_BUILD_TYPE Release). Тоже когда-то с этим намучался. Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 18:38 Как ты компилишь? Нужно в каталоге с первым CMakeLists создать каталог (пусть будет build), зайти в него, сделать cmake && make, когда все скомпилится, исполняемый файл окажется в каталоге build/bin, а плугин build/bin/plugins. Что именно не получается? Косяк винды, добавь в первый цмэйк SET (CMAKE_BUILD_TYPE Release) Компилится то все как раз нормально. Работает потом неправильно. Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 18:39 У QPluginLoader есть метод: QString QPluginLoader::errorString () const Что он пишет? P.S. У меня, кстати, тоже все работает. ::) Сейчас попробую. Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 18:52 QPluginLoader::errorString () возвращает Unknown error
Компилю так: cmake -G "MinGW Makefiles" CMakeLists.txt У кого работает скажите версии qt, cmake, mingw. может тут что не так. Название: Re: CMake и сборка plugin Отправлено: Пантер от Март 03, 2010, 18:57 mkdir build && cd build && cmake -G "MinGW Makefiles" .. && make
Название: Re: CMake и сборка plugin Отправлено: BRE от Март 03, 2010, 19:10 QPluginLoader::errorString () возвращает Unknown error Сделай так:Код
У кого работает скажите версии qt, cmake, mingw. может тут что не так. [...]$ qmake-qt4 -vQMake version 2.01a Using Qt version 4.6.2 in /usr/lib64 [...]$ cmake --version cmake version 2.6-patch 4 [...]$ gcc -v Используются внутренние спецификации. Целевая архитектура: x86_64-redhat-linux Параметры конфигурации: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i586 --build=x86_64-redhat-linux Модель многопоточности: posix gcc версия 4.4.1 20090725 (Red Hat 4.4.1-2) (GCC) Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 19:11 mkdir build && cd build && cmake -G "MinGW Makefiles" .. && make Что-то либо я Вас не понимаю, либо Вы меня. Если я сделаю так, то cmake меня обругает за отсутствие файла. Если я сразу в каталоге с первым CMakeLists.txt сделаю cmake && make, то все собирается. Создается папка bin c myapplication.exe, в ней папка plugins c libmyplugin.dll и libmyplugin.dll.a Т.е. собирается все что должно, но работать оно не хочет. Я по совету BRE вывел текст ошибки, получил - "Unknown error" Название: Re: CMake и сборка plugin Отправлено: BRE от Март 03, 2010, 19:17 Я по совету BRE вывел текст ошибки, получил - "Unknown error" Эта ошибка присваивается по умолчанию. Ты ее проверяешь еще до того, как пытаешься загрузить плагин. Попробуй сделать как я предложил чуть выше.Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 19:18 Сделай так: Код
"The plugin 'D:/.../chapter43/PlugIn/bin/plugins/libmyplugin.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" Хотя я CMakeLists.txt указано SET (CMAKE_BUILD_TYPE Release) P.S. У меня винда, в linux раньше выходных проверить не получится. Название: Re: CMake и сборка plugin Отправлено: Пантер от Март 03, 2010, 19:20 Попробуй пересобрать. SET (CMAKE_BUILD_TYPE Release) написал в первом цмэйке? Запости сюда его.
Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 19:31 Попробуй пересобрать. SET (CMAKE_BUILD_TYPE Release) написал в первом цмэйке? Запости сюда его. Так тоже не получается. Получилось путем добавления в первом цмэйке Код: ADD_DEFINITIONS(${QT_DEFINITIONS}) Только это что, выходит дебаг версию плагинов под виндой собрать не получится? Название: Re: CMake и сборка plugin Отправлено: BRE от Март 03, 2010, 19:34 Только это что, выходит дебаг версию плагинов под виндой собрать не получится? Попробуй собрать Qt и в дебаг версии... ::)Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 19:36 Попробуй собрать Qt и в дебаг версии... ::) Так под виндой она и так в обоих (debug release) версиях. Название: Re: CMake и сборка plugin Отправлено: кып от Март 03, 2010, 19:39 Ладно, вопрос в каком то виде решен.
ОГРОМНОЕ СПАСИБО за помощь, а то я третий день маюсь, а основную работу то же работать надо :D |