Russian Qt Forum
Ноябрь 24, 2024, 19:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Клонирование проекта с MinGW 4.8.1 не получается  (Прочитано 12900 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Март 27, 2014, 14:14 »

Делал проект на Qt 5.2.0, MinGW 4.8.1, Cmake 2.8 (Windows XP). Изначально ставил CMake, потом MinGW, потом Qt. MinGW отдельно ставился, потому что до этого стояла старая версия со старым Qt, с ней проект не импортировался. Уже не помню точно, были какие-то мелкие нюансы, но все как-то практически сразу работало, особых проблем не встретил. Сейчас надо клонировать этот же проект, причем только исходники и сам проект, на голую Win7. А также написать документацию, чтобы потом при необходимости кто-то другой смог проект установить на другую машину с 0. Ставлю на W7 в том же порядке - CMake, MinGW, Qt. В проекте есть только CMakeLists.txt, он импортируется, проект в QtCreator открылся. Нажимаю собрать и получаю сообщение об ошибке в системном инклюде - нет файла wdm.h в ntddk.h. Смотрю - ntddk.h и прочие системные .h берутся из каталога ....mingw32\include, который вложен в установку Qt. А в проекте, который у меня собирается и работает уже давно, они берутся из каталога, который вложен в место установки MinGW. Смотрю настройки проектов, маршруты и т.д. и не вижу разницу - вроде всё одинаково в обоих случаях. Бьюсь уже полдня и не могу найти - где расходятся настройки, почему инклюды в первом случае берутся из одного места, во втором из другого, и главное не понятно - почему в обоих случаях (вложенный в Qt и отдельно установленный) используется MinGW x32 v4.8.1, но системные инклюды в них совершенно разные, даже написаны разными людьми.

Где я прозевал настройки?
« Последнее редактирование: Март 31, 2014, 10:51 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #1 : Март 27, 2014, 14:25 »

Ну тут надо смотреть, действительно ли всё собирается оттуда, откуда вы думаете. Могут цепляться инклуды из других мест/утилит и прочего.

PS по-моему ntddk является частью Windows DDK. Но тут minGw, а по нему я не знаю Улыбающийся

Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Март 27, 2014, 14:29 »

Так я в QtCreator вижу - ntddk в рабочем проекте берется из C:\mingw\include\ddk, а в новом из C:/qt/qt5.2.0/tools/mingw48_32/i686-w64-mingw32/include/ddk. Но нигде не могу найти, где эти каталоги заданы, и почему именно такие у них маршруты.
Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #3 : Март 27, 2014, 14:36 »

Эмм.. переменные окружения посмотрите - я так понимаю это винда Улыбающийся
Так же пути могут быть заданы в pro файле в секции INCLUDE += вроде.

В чем проблема то ? В том что файла нет, или что файл по пути есть, но креатор его не видит?
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #4 : Март 27, 2014, 14:51 »

переменные окружения все в порядке, в них маршруты не задаются, кроме одного - умолчательный маршрут к бинарникам mingw в PATH, он у меня в обоих случаях одинаковый, и показывает на отдельную установку mingw

файла .pro нет в проекте вообще, есть CMakeLists.txt, в нем тоже маршруты к инклюдам mingw нигде не заданы, и разумеется, раз это клон проекта, то CMakeLists.txt точно такой же

проблема в том, что клон проекта не компилируется, выдает ошибки в системных инклюдах, в клоне они почему-то берутся не из того места, откуда должны

вписал в CMakeLists.txt клона явно указание где еще можно брать инклюды

include_directories("C:/mingw/include")

получил толпу ошибок в системных инклюдах, которые тащятся из c:\qt\qt5.2.0\tools\mingw48_32\i686-w64-mingw32\include

ПОЧЕМУ в комплект с Qt включены одни системные инклюды MinGW, а в отдельную поставку MinGW той же версии - совершенно другие, несовместимые??? это саботаж такой?Непонимающий  Непонимающий
« Последнее редактирование: Март 27, 2014, 14:58 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #5 : Март 27, 2014, 15:10 »

Эмм.. Удалил недавно Qt 5.2+ не могу проверить, но там насколько я помню тоже не было ntddk.

В Qt (я не совсем понимаю CMAKE, но он по-моему парсит pro файлы Qt) видимо прописаны пути поиска для стандартного minGw, нне?

PS пробуйте, устанавливайте только нужный вам minGw, сносите идущий с Qt. Тут уже вступает в дело шаманство. У меня недавно вон собрался проект с зависимостью от древних библиотек, которые тихо мирно прятались. На другом компе конечно же не собралось бы Веселый
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #6 : Март 27, 2014, 15:14 »

в коде приложения есть строка

#include <ddk/ntddpar.h>

и в работающем проекте, и в клоне это ссылка на c:\mingw\include\ddk\ntddpar.h

открываю этот файл в обоих проектах - он одинаковый, в нем есть строка

#include "ntddk.h"

в работающем проекте она ссылается на c:\mingw\include\ddk\ntddk.h
в неработающем на c:\qt\qt5.2.0\tools\mingw48_32\i686-w64-mingw32\include\ddk\ntddk.h

и эти файлы уже разные...

- хотя файл c:\mingw\include\ddk\ntddk.h ТОЖЕ СУЩЕСТВУЕТ - ну ладно бы его не было, нашло по маршруту одноименный в другом каталоге, но он есть, и порядок просмотра маршрутов тоже ни при чем - в каталоге c:\qt\qt5.2.0\tools\mingw48_32\i686-w64-mingw32\include\ddk есть и файл ntddpar.h, однако он был открыт из маршрута c:\mingw\include\ddk

где, в какой момент, почему поменялся маршрут  Непонимающий
ну да, я вижу, что во втором случае двойные кавычки у ntddk.h, но это "текущий" файл не для всего проекта, а для файла ntddpar.h, значит он должен браться в том же каталоге - но нет, и он берется непонятно по какому принципу

и вообще где порядок перебора маршрутов в QtCreator задается - никак не могу найти...  Злой

« Последнее редактирование: Март 27, 2014, 15:44 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #7 : Март 27, 2014, 15:18 »

я не совсем понимаю CMAKE, но он по-моему парсит pro файлы Qt

нет, нифига... проект приложения изначально был сделан на CMake/GNU, там никакого Qt в помине не было, Qt уже я потом подшил, но сначала импортировал и собрал приложение без использования Qt в QtCreator

а Qt подшивается в отдельной библиотеке, которая вообще собирается отдельным проектом, и уже её .dll указана в проекте CMake, и грузится эта библиотека при старте приложения - то есть, маршруты проекта, который использует Qt, никак с маршрутами проекта CMake не связаны

« Последнее редактирование: Март 27, 2014, 15:20 от Гурман » Записан

2^7-1 == 127, задумайтесь...
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #8 : Март 27, 2014, 16:07 »

CMake при запуске какой MinGW toolchain находит, если из консоли запускать без всяких QtCreator?
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #9 : Март 28, 2014, 07:58 »

если просто запустить cmake CMakeLists.txt то начинает генерить для Visual Studio 2005, которая тоже есть на целевой машине

при запуске с ключом -G "MinGW Makefiles" ругается, что не найден RC компилятор, просит установить переменную среды CMAKE_RC_COMPILER

я так понимаю, это к виндозным ресурсам - но при чем тут они, если они в проекте вообще не используются, и вообще никаких ресурсов в приложении, собираемом с помощью CMake нет и в помине, оно глухо консольное и мультиплатформенное
« Последнее редактирование: Март 28, 2014, 08:46 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #10 : Март 28, 2014, 15:36 »

Хех... установил на еще одну голую машину (на самом деле, всё это проделывается в виртуалках, то есть, число голых машин не ограничено) всё тоже самое, но Qt ставил без встроенного MinGW.

И исходники главного приложения откомпилировались... Правда, там есть косяк какой-то в отдельном MinGW, ошибка в хидере wchar.h, почему-то нет типа intptr_t. Лечится добавкой typdef int intptr_t; после чего всё компиляется. Но сборка приложения не проходит - нет моей библиотеки, которая использует Qt. Но её и не может быть - нет ведь встроенного MinGW, который для компиляции с Qt используется.

Вот ведь намутили с этими MinGW в Qt! Два совершенно разных, хотя одной и той же версии.

В понедельник попробую еще раз установить Qt с MinGW после отдельного MinGW, и внимательно настроить использование комплектов в креаторе. Похоже, проблема именно в этом - тщательно надо настраивать использование MinGW, поскольку для основного приложения используется отдельный, встроенным в Qt оно не компилируется. А для библиотеки с Qt, наоборот, используется встроенный, отдельным она не компилируется. Как-то это всё у меня при первом разе на автомате получилось правильно полгода назад, но сейчас повторить пока не удалось.

Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #11 : Март 28, 2014, 20:16 »

Qt компилируется любым. Просто тот, который идёт с ним проверен разработчиками Улыбающийся
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #12 : Март 31, 2014, 08:35 »

Ну не буду же я из-за библиотеки в 2000 строк перекомпилировать весь Qt отдельным MinGW...

При открытии проекта библиотеки в его настройках такая надпись: Отсутствуют подходящие комплекты. При этом отдельный MinGW в списке комплектов, разумеется, есть.
« Последнее редактирование: Март 31, 2014, 08:44 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #13 : Март 31, 2014, 09:40 »

В общем, всё получилось, внимательно надо только было настроить использование компиляторов: для сборки всего приложения использовать отдельно установленный MinGW, а для сборки моей библиотеки MinGW из комплекта Qt. Почему-то после установки Qt в настройках комплекта Desktop Qt ... MinGW поле sysroot оказалось пустое, и для библиотеки по-умолчанию qmake не запускался.

Теперь всё это придется повторить и описать по шагам, а то достанется это когда-нибудь отмороженному виндузятнику, он же ничего вообще сделать не сможет...
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #14 : Март 31, 2014, 11:35 »

И блин, не получается повторить... после установки Qt и MinGW в любом порядке в мастере запуска CMake, в поле Генератор есть только генератор для конфигурации MinGW из Desktop Qt 5.2.0.  Злой Получилось один раз наверно только потому, что я сначала ставил Qt без встроенного MinGW, а потом еще раз устанавливал уже со встроенным. Но это уже шаманство, непредсказуемо и не гарантировано, что повторится.

Вот же блин горелый...  В замешательстве

КАК ЗАСТАВИТЬ QtCreator НАЙТИ ГЕНЕРАТОР ДЛЯ CMake ИЗ ОТДЕЛЬНО УСТАНОВЛЕННОГО MinGW???
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.