Russian Qt Forum
Ноябрь 24, 2024, 14:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
CMake и сборка plugin
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: CMake и сборка plugin (Прочитано 12776 раз)
кып
Гость
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. Все что нашел на эту тему в сети перепробовал, ничего не помогает
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: CMake и сборка plugin
«
Ответ #1 :
Март 03, 2010, 17:52 »
Вот подправил.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Rcus
Гость
Re: CMake и сборка plugin
«
Ответ #2 :
Март 03, 2010, 17:53 »
А как именно не работает? У меня все нормально собралось и заработало после копирования по образу .pro DESTDIR
Разница в размере файлов объясняется разными флагами компилятора: например в режиме RelWithDebInfo CMake по-умолчанию использует оптимизацию -O2, но не определяет -DQT_NO_DEBUG, в режиме Release используется -O3, что порой увеличивает размер получаемого файла.
Записан
кып
Гость
Re: CMake и сборка plugin
«
Ответ #3 :
Март 03, 2010, 18:22 »
Цитата: Пантер от Март 03, 2010, 17:52
Вот подправил.
А у меня все равно не работает :-(
Какие у вас версии qt, cmake, и mingw?
Записан
кып
Гость
Re: CMake и сборка plugin
«
Ответ #4 :
Март 03, 2010, 18:25 »
Цитата: Rcus от Март 03, 2010, 17:53
А как именно не работает?
Не работает в смысле плагин не подгружается, не добавляются в меню его функции.
А размер у меня сильно отличается, раза в два.
Записан
BRE
Гость
Re: CMake и сборка plugin
«
Ответ #5 :
Март 03, 2010, 18:26 »
У QPluginLoader есть метод: QString QPluginLoader::errorString () const
Что он пишет?
P.S. У меня, кстати, тоже все работает.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: CMake и сборка plugin
«
Ответ #6 :
Март 03, 2010, 18:26 »
Как ты компилишь? Нужно в каталоге с первым CMakeLists создать каталог (пусть будет build), зайти в него, сделать cmake && make, когда все скомпилится, исполняемый файл окажется в каталоге build/bin, а плугин build/bin/plugins. Что именно не получается?
Косяк в винде, добавь в первый цмэйк SET (CMAKE_BUILD_TYPE Release). Тоже когда-то с этим намучался.
«
Последнее редактирование: Март 03, 2010, 18:41 от Пантер
»
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
кып
Гость
Re: CMake и сборка plugin
«
Ответ #7 :
Март 03, 2010, 18:38 »
Цитата: Пантер от Март 03, 2010, 18:26
Как ты компилишь? Нужно в каталоге с первым CMakeLists создать каталог (пусть будет build), зайти в него, сделать cmake && make, когда все скомпилится, исполняемый файл окажется в каталоге build/bin, а плугин build/bin/plugins. Что именно не получается?
Косяк винды, добавь в первый цмэйк SET (CMAKE_BUILD_TYPE Release)
Компилится то все как раз нормально. Работает потом неправильно.
Записан
кып
Гость
Re: CMake и сборка plugin
«
Ответ #8 :
Март 03, 2010, 18:39 »
Цитата: BRE от Март 03, 2010, 18:26
У QPluginLoader есть метод: QString QPluginLoader::errorString () const
Что он пишет?
P.S. У меня, кстати, тоже все работает.
Сейчас попробую.
Записан
кып
Гость
Re: CMake и сборка plugin
«
Ответ #9 :
Март 03, 2010, 18:52 »
QPluginLoader::errorString () возвращает Unknown error
Компилю так: cmake -G "MinGW Makefiles" CMakeLists.txt
У кого работает скажите версии qt, cmake, mingw. может тут что не так.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: CMake и сборка plugin
«
Ответ #10 :
Март 03, 2010, 18:57 »
mkdir build && cd build && cmake -G "MinGW Makefiles" .. && make
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
Re: CMake и сборка plugin
«
Ответ #11 :
Март 03, 2010, 19:10 »
Цитата: кып от Март 03, 2010, 18:52
QPluginLoader::errorString () возвращает Unknown error
Сделай так:
Код
C++ (Qt)
QPluginLoader
loader
(
...
)
;
if
(
!
loader.
load
(
)
)
{
qDebug
(
)
<<
loader.
errorString
(
)
;
}
Цитата: кып от Март 03, 2010, 18:52
У кого работает скажите версии qt, cmake, mingw. может тут что не так.
[...]$ qmake-qt4 -v
QMake 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
«
Ответ #12 :
Март 03, 2010, 19:11 »
Цитата: Пантер от Март 03, 2010, 18:57
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"
Записан
BRE
Гость
Re: CMake и сборка plugin
«
Ответ #13 :
Март 03, 2010, 19:17 »
Цитата: кып от Март 03, 2010, 19:11
Я по совету
BRE
вывел текст ошибки, получил - "Unknown error"
Эта ошибка присваивается по умолчанию. Ты ее проверяешь еще до того, как пытаешься загрузить плагин. Попробуй сделать как я предложил чуть выше.
Записан
кып
Гость
Re: CMake и сборка plugin
«
Ответ #14 :
Март 03, 2010, 19:18 »
Цитата: BRE от Март 03, 2010, 19:10
Сделай так:
Код
C++ (Qt)
QPluginLoader
loader
(
...
)
;
if
(
!
loader.
load
(
)
)
{
qDebug
(
)
<<
loader.
errorString
(
)
;
}
"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 раньше выходных проверить не получится.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...