На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> QtDBus на WINDOWS , Поэтапная сборка MinGW
    Сунулся я искать, как мне реализовать межпроцессное взаимодействие и наткнулся на такую интересную штуку, как QtDBus. В документации к Qt указано, что QtDBus предназначена только для ОС unix, а под Windows работать не будет (и где, спрашивается, обещанная кросплатформенность?) Порылся в интернете, нашел несколько сайтов, где умельцы, все-таки оседлали dbus и рекомендуют к использованию. Например, пожалуй, самый распространенный:
    https://sites.google.com/site/dimchansky/dbus
    или
    http://www.lothlorien.com/kf6gpe/?p=141
    Однако, порывшись в статьях, с досадой бы вынужден констатировать, что они успели порядком устареть. Поэтому, опираясь на статьи, все пришлось делать самостоятельно. После 2-х дней мозгового и гугл штурма, мои старания таки увенчались успехом. Посему, хочу поделиться поэтапной инстукцией, как собрать QtDBus в домашних условиях :)
    Прошу прощения сразу, если какие-то пункты окажутся излишни, а какие-то я, возможно, пропустил. Уверен, что можно сделать иначе, более складно и красиво. Так что, сильно не бейте :)
    Итак.

    Сборка QDBus под Windows
    Сборка DBUS
    1. Скачиваем и устанавливаем QtSDK .Оттуда нам нужен MinGW и QTCreator.
    2. Прописываем путь до MinGW в переменной окружении path
    3. Скачиваем и устанавливаем CMake (http://www.cmake.org/cmake/resources/software.html)
    4. Скачиваем и устанавливаем libexpat
    5. Скачиваем библиотеку dbus (http://cgit.freedesktop.org/dbus/dbus/snap.../dbus-1.4.0.zip). Распаковываем в корень, например c:\dbus-1.4.0.
    6. Редактируем dbus-1.4.0\cmake\CMakeLists.txt, вставляем в самое начало:
    ExpandedWrap disabled
      set(LIBEXPAT_LIBRARIES "C:/Program Files/win32libs/lib/libexpat.lib")
      set(LIBEXPAT_INCLUDE_DIR "C:/Program Files/win32libs/include")
      set(LIBEXPAT_FOUND ON)
      после строки
      project(dbus)


    7. Создаем директорию, куда будет производиться сборка, например c:\dbus
    8. Находим в исходниках файл dbus-arch-deps.h.in – убераем из имени файла «.in», комментируем все строки, кроме определения типов dbus_int32_t и dbus_uint32_t и заменяем тиипы на стандартные, чтобы получилось следующее:
    ExpandedWrap disabled
      typedef int dbus_int32_t;
      typedef unsigned int dbus_uint32_t;
       
      typedef short dbus_int16_t;
      typedef unsigned short dbus_uint16_t;


    9. Заходим в нее и выполняем команду cmake -G "MinGW Makefiles" ..\dbus-1.4.0\cmake -DDBUS_USE_EXPAT=on. Если MinGW настроен правильно, то должна начаться сборка. Внимание! Появляются ошибки!
    Например, у меня в файле dbus-file-win.c компилятор совершенно оправдано ругался, что в функции _dbus_make_file_world_readable не достаточное количество параметров, просто добавляем «,&error».
    10. Линкуем. mingw32-make. Проверяем папку bin. Должны появиться libdbus-1.dll и libdbus-1.dll.a

    Сборка QDBUS

    11. Скачиваем source QT (http://qt-project.org/downloads), устанавливаем.
    12. В установленном каталоге ищем src/ dbus/ dbus.pro. Жмем. Должен запуститься QtCreator (если не запустился, просто ассоциируйте приложение с расширением «*.pro»).
    13. Теперь нужно поменять инструмент. Дело в том, что по умолчанию QtCreator использует инструмент из установленного SDK, в котором, в чем собственнолично вы сами можете убедиться, отсутствуют больше половины необходимых для компиляции QDBus файлов. Заходим в меню Инструмент/Параметры. На вкладке Qt4 добаляем новый профиль. В появившемся окне ищем qmake.exe из ранее установленного каталога исходников. Жмем OK, после чего во вкладке Проекты выбираем созданный профиль. Теперь при сборке компилятор будет использовать файлы исходников, а не SDK.
    14. В QtCreator’е открываем файл dbus.pro, добавляем строки
    ExpandedWrap disabled
      INCLUDEPATH += с:/dbus-1.4.0
      INCLUDEPATH += ../../include/QtCore
      INCLUDEPATH += с:/dbus
      win32 {
          wince*:LIBS_PRIVATE += -lws2
          else:LIBS_PRIVATE += -lws2_32 \
              -ladvapi32 \
              -lnetapi32 \
              -luser32
          CONFIG(debug  , debug|release):LIBS_PRIVATE += -ldbus-1 -Lс:/dbus/bin
          CONFIG(release, debug|release):LIBS_PRIVATE += -ldbus-1 -Lс:/dbus/bin
          else:LIBS_PRIVATE += -ldbus-1
      }

    15. Открываем файл qdbusmacros.h, добавляем определения строки:
    ExpandedWrap disabled
      #undef QT_NO_DBUS
      #define QT_LINKED_LIBDBUS

    16. Запускаем сборку. Если появилась ошибка на отстутствие типа dbus_uint64_t (я такой не нашел), просто переопределите его там же, в qdbusmacros.h: typedef quint64 dbus_uint64_t;
    17. Идем в папку lib, любуемся собранными libQtDBus4.a, libQtDBusd4.a, QtDBus4.dll и QtDBusd4.dll.
    18. Теперь, подключаем файлы к проекту, в котором хотим использовать возможности QDBus. Для этого в проекте *.pro указываем, что сборка будет производиться с библиотекой dbus и добавляем строки:
    ExpandedWrap disabled
      QT += dbus
      INCLUDEPATH+= с:/Qt_4_8_3/lib
      windows {
      CONFIG(debug,debug|release): LIBS+=-lQtDBusd4 -Lс:/Qt_4_8_3/lib
      CONFIG(release,debug|release): LIBS+=-lQtDBus4 -Lс:/Qt_4_8_3/lib
      }


    Собираем! Усё :)
    Сообщение отредактировано: hopen -
      Молоток! Я как раз искал. Дома буду - попробую! Так держать
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0215 ]   [ 16 queries used ]   [ Generated: 27.04.24, 19:00 GMT ]