Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.82.140.17] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Начал изучать QT (Windows 10, msys2, mingw-w64-x86_64). Возникли следующие вопросы: 1. При запуске qtcreator появляется окно (скриншот прикрепил). С помощью msys2 для Clang ничего не ставил. Как избавиться от этого окна при запуске qtcreator? 2. При попытке скомпилировать проект из учебного курса (проект прикрепил) появляется ошибка: :-1: ошибка: [Makefile.Debug:108: debug/QtWidgets_en.qm] Error 2 mingw32-make[1]: *** [Makefile.Debug:108: debug/QtWidgets_en.qm] Error 2 mingw32-make[1]: Leaving directory 'N:/MyProgramming/qtBook/build-QtWidgets-Desktop_Qt_6_6_2_shared_MinGW_w64_MINGW64_MSYS2-Debug' mingw32-make: *** [Makefile:45: debug] Error 2 23:01:49: Процесс «N:\msys64\mingw64\bin\mingw32-make.exe» завершился с кодом 2. Ошибка при сборке/развёртывании проекта QtWidgets (комплект: Desktop Qt 6.6.2 (shared) MinGW-w64 MINGW64 (MSYS2)) Комплект Desktop Qt 6.6.2 (shared) MinGW-w64 MINGW64 (MSYS2) имеет недостатки в конфигурации, которые могут быть источниками данной проблемы. Во время выполнения этапа «Сборка» Я установил mingw-w64-x86_64-qt6-multimedia, но ошибка все равно появляется. Подскажите, пожалуйста, как определить, чего не хватает проекту и как правильно настроить проект? Проект находится на локальном диске N: N:\MyProgramming\qtBook\QtWidgets\ Прикреплённая картинка
Прикреплённый файлQtWidgets.zip (15,43 Кбайт, скачиваний: 40) |
Сообщ.
#2
,
|
|
|
На сколько я помню, могу ошибаться, ClangFormat - это плагин QtCreator'а. Он может включаться/отключаться. Попробуй его отключить.
|
Сообщ.
#3
,
|
|
|
Цитата Starostin @ Проект находится на локальном диске N: N:\MyProgramming\qtBook\QtWidgets\ Тут вот какой момент - если ты используешь QtCreator, установленный в среде MSYS2 (а не отдельно), то попробуй пользовать файловую систему, которую эмулирует MSYS2. Т.е. создай каталог ~/projects и в нем размещай свои проекты. Не знаю на сколько это решит твои проблемы, но у меня такое вот размещение не вызывало проблем со сборкой. Хотя сейчас я QtCreator использую, установленный просто инсталлятором, т.е. не средствами MSYS2. |
Сообщ.
#4
,
|
|
|
Отключить плагин не получилось, в настройках у меня нет пунктов, указанных в https://doc.qt.io/qtcreator/creator-beautifier.html и https://programmersought.com/article/4744361708/. Пришлось установить clang.
А по поводу компиляциии примера можете помочь? |
Сообщ.
#5
,
|
|
|
Цитата Starostin @ А по поводу компиляциии примера можете помочь? У меня получилось нормально откомпилировать. Но предварительно пришлось почистить проект от "мусора" - лишние файлы автосохранений. И самое главное - перед первым открытием проекта в QtCreator нужно удалить "QtWidgets.pro.user". Это позволит QtCreator'у настроить проект под настроенные в нем комплекты. Почищенный архив прикреплю. Ну и на будущее - настоятельно не рекомендую использовать редактор UI. Лучше всего интерфейс делать динамически в коде, даже если интерфейс динамически изменяться не будет. Простой пример - задаем размеры диалогового окна в UI, а пользователь берет и меняет масштабирование всего интерфейса GUI (шрифты как минимум) - многие элементы могут и начнут обрезаться. Если динамически в коде собираем интерфейс, а перед отображением окна делаем resize(0,0) - в этом случае Qt сам подберет минимальный размер окна, но так, чтобы все элементы размещались полностью. Прикреплённый файлQtWidgets.7z (3,04 Кбайт, скачиваний: 27) |
Сообщ.
#6
,
|
|
|
Спасибо большое за помощь! При компиляции присланного проекта возникла ошибка:
process_begin: CreateProcess(NULL, N:\msys64\mingw64\bin\lrelease.exe ..\QtWidgets\QtWidgets_en.ts -qm debug\QtWidgets_en.qm, ...) failed. make (e=2): Не удается найти указанный файл. mingw32-make[1]: *** [Makefile.Debug:108: debug/QtWidgets_en.qm] Error 2 mingw32-make: *** [Makefile:45: debug] Error 2 14:04:02: Процесс «N:\msys64\mingw64\bin\mingw32-make.exe» завершился с кодом 2. Ошибка при сборке/развёртывании проекта QtWidgets (комплект: Desktop Qt 6.6.2 (shared) MinGW-w64 MINGW64 (MSYS2)) Комплект Desktop Qt 6.6.2 (shared) MinGW-w64 MINGW64 (MSYS2) имеет недостатки в конфигурации, которые могут быть источниками данной проблемы. Во время выполнения этапа «Сборка» |
Сообщ.
#7
,
|
|
|
Ну перво-наперво, я собирал, используя Qt 5.12. Для 6-й версии не пробовал - у меня тулчейны для нее не установлены, и я пока на 6-ю версию не спешу переходить.
|
Сообщ.
#8
,
|
|
|
Понятно. Буду разбираться.
|
Сообщ.
#9
,
|
|
|
Я установил с помощью msys QT и Clang (:
pacman -S mingw-w64-x86_64-clang pacman -S mingw-w64-clang-x86_64-toolchain pacman -S mingw-w64-x86_64-clang-tools-extra pacman -S mingw-w64-x86_64-gdb pacman -S mingw-w64-x86_64-cmake pacman -S mingw-w64-x86_64-make Правильно я понимаю, что clang имеет те же ключи компиляции, что gcc, только для компиляции нужно запускать clang вместо gcc/g++. |
Сообщ.
#10
,
|
|
|
Цитата Starostin @ Правильно я понимаю, что clang имеет те же ключи компиляции, что gcc, только для компиляции нужно запускать clang вместо gcc/g++. ага Добавлено Цитата Starostin @ установил с помощью msys QT и Clang (: Только установки Qt тут как-то не наблюдается. |
Сообщ.
#11
,
|
|
|
Да я установку QT не указывал:
pacman -S mingw-w64-x86_64-qt6 pacman -S mingw-w64-x86_64-qt-creator mingw-w64-x86_64-qt6-base-debug |
Сообщ.
#12
,
|
|
|
Решил перейти на clang. Командами
pacman -S mingw-w64-clang-x86_64-qt-creator pacman -S mingw-w64-clang-x86_64-cmake Если выбрать вместо cmake систему сборки qmake, то получаю сообщение "Cannot run compiler g++", поскольку gcc не устанавливал. У меня следующие вопросы: 1. Как в qtcreator правильно настроить конфигурацию проекта (комплекты инструментов)для систем сборки cmake и qmake? 2. Можно ли настроить проект qmake, чтобы он компилировался с помощью clang? 3. Какую систему сборки лучше использовать? Прикреплённая картинка
|
Сообщ.
#13
,
|
|
|
Могу ошибаться, но Clang является фронтэндом по отношению к GCC в данном случае. Clang представляет собой компилятор, который работает вместе с LLVM (Low Level Virtual Machine) и предоставляет большую часть инструментария для замены стека GCC. Одной из основных целей Clang является предоставление архитектуры на основе библиотек, чтобы компилятор мог взаимодействовать с другими инструментами, такими как интегрированные среды разработки (IDE). Таким образом, думаю, следует еще поставить gcc. Да, есть системы типа FreeBSD и macOS, где полностью выпилено "наследие" от GCC, добавлены стандартные заголовки и своя libc++. Но это не про MSYS2.
|
Сообщ.
#14
,
|
|
|
Сделал pacman -S mingw-w64-x86_64-toolchain, но ничего не изменилось: в конфигурации cmake незадан верный инструментарий комплекта. Как его задавать правильно?
|
Сообщ.
#15
,
|
|
|
А из этого все поставлено?
mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-cmake mingw-w64-x86_64-extra-cmake-modules |
Сообщ.
#16
,
|
|
|
Все установлено. По ссылке https://disk.yandex.ru/i/zs9l9VTPxncLnA из-за большого размера разместил скриншот проекта. Каталог сборки выделен красным, но он существует, его архив я прикрепил. Наверное красный из-за неправильных настроек файлов в нем. При наведении на желтый треугольник появляется сообщение, указанное в скриншоте в сообщении 12.
При загрузке проекта щелчком по CMakeLists.txt и нажатии кнопки Configure Project появляется сообщение: :-1: ошибка: Команда «N:\msys64\clang64\bin\cmake.exe -S N:/MyProgramming/qtProcFilesClang -B N:/MyProgramming/qtProcFilesClang/build/Desktop_Qt_6_7_0_shared_MinGW_w64_CLANG64_MSYS2-Debug» завершилась с кодом 1. :-1: ошибка: CMake project configuration failed. No CMake configuration for build type "Debug" found. Прикреплённый файлDesktop_Qt_6_7_0_shared_MinGW_w64_CLANG64_MSYS2_Debug.zip (33,39 Кбайт, скачиваний: 29) |
Сообщ.
#17
,
|
|
|
Прикрепи сам проект в архиве. Посмотрю, может чего увижу.
|
Сообщ.
#18
,
|
|
|
Спасибо. Проект прикрепил.
Прикреплённый файлqtProcFilesClang.zip (2,65 Кбайт, скачиваний: 26) |
Сообщ.
#19
,
|
|
|
Я у себя в директории N:\msys64\clang64\bin\ не нашел clang++. Видимо, поэтому не получается. Проверил на Debian - все нормально, файлы clang и clang++ есть, все работает. Проверил с помощью pacman -Ss clang - получил следующее:
msys/clang 11.0.0-5 [installed] C language family frontend for LLVM msys/mingw-w64-cross-clang 11.0.0-4 (mingw-w64-cross-clang-toolchain) [installed] Cross Clang for the MinGW-w64 msys/mingw-w64-cross-clang-crt 9.0.0.6158.1c773877-2 (mingw-w64-cross-clang-toolchain) [installed] MinGW-w64 CRT for cross-compiler msys/mingw-w64-cross-clang-headers 9.0.0.6158.1c773877-2 (mingw-w64-cross-clang-toolchain) [installed] MinGW-w64 headers for cross-compiler msys/mingw-w64-cross-compiler-rt 11.0.0-6 [installed] Compiler runtime libraries for cross clang N:\msys64\clang64\bin\libclang.dll N:\msys64\clang64\bin\libclang-cpp.dll |
Сообщ.
#20
,
|
|
|
Цитата Starostin @ Что нужно сделать, чтобы файлы clang++ и clang появились? Нужно поставить собственно clang (выбери нужный тебе комплект/ы): pacman -S mingw32/mingw-w64-i686-clang pacman -S mingw32/mingw-w64-i686-clang-analyzer pacman -S mingw32/mingw-w64-i686-clang-libs pacman -S mingw32/mingw-w64-i686-clang-tools-extra pacman -S mingw32/mingw-w64-i686-compiler-rt pacman -S mingw64/mingw-w64-x86_64-clang pacman -S mingw64/mingw-w64-x86_64-clang-analyzer pacman -S mingw64/mingw-w64-x86_64-clang-libs pacman -S mingw64/mingw-w64-x86_64-clang-tools-extra pacman -S mingw64/mingw-w64-x86_64-compiler-rt pacman -S ucrt64/mingw-w64-ucrt-x86_64-clang pacman -S ucrt64/mingw-w64-ucrt-x86_64-clang-analyzer pacman -S ucrt64/mingw-w64-ucrt-x86_64-clang-libs pacman -S ucrt64/mingw-w64-ucrt-x86_64-clang-tools-extra pacman -S ucrt64/mingw-w64-ucrt-x86_64-compiler-rt pacman -S clang32/mingw-w64-clang-i686-clang pacman -S clang32/mingw-w64-clang-i686-clang-analyzer pacman -S clang32/mingw-w64-clang-i686-clang-libs pacman -S clang32/mingw-w64-clang-i686-clang-tools-extra pacman -S clang32/mingw-w64-clang-i686-compiler-rt pacman -S clang64/mingw-w64-clang-x86_64-clang pacman -S clang64/mingw-w64-clang-x86_64-clang-analyzer pacman -S clang64/mingw-w64-clang-x86_64-clang-libs pacman -S clang64/mingw-w64-clang-x86_64-clang-tools-extra pacman -S clang64/mingw-w64-clang-x86_64-compiler-rt |
Сообщ.
#21
,
|
|
|
Да, и сразу хочу предупредить ... увы и MSYS2 не идеален
Что касается сборки статически-линкованных проектов с Qt5/6, можно смело получить нечто подобное: ... E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc6b): undefined reference to `gr_seg_destroy' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc85): undefined reference to `gr_seg_first_slot' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc8d): undefined reference to `gr_slot_origin_X' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xca4): undefined reference to `gr_seg_advance_X' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xcdb): undefined reference to `gr_featureval_destroy' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xce5): undefined reference to `gr_seg_destroy' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libharfbuzz.a(hb-uniscribe.cc.obj):(.text+0x723): undefined reference to `__imp_UuidCreate' E:/Tools/MSys64/ucrt64/bin/ld: E:/Tools/MSys64/ucrt64/lib\libfreetype.a(src_bzip2_ftbzip2.c.obj):(.text+0x6c): undefined reference to `BZ2_bzDecompressEnd' ... Лично у меня зарегано 8 комплектов для статической линковки, собирается не все и не все хорошо: Но и не мудрено! Изначально комплекты со статической линковкой не хотели ставится т.к. ABI у qmake были внезапно x86-windows-unknown-pe-*, когда у компиляторов было все как положено x86-windows-msys-pe-*, и пришлось делать дубли компиляторов и насильно менять им ABI, только тогда комплекты зарегались. Одно меня радует под моей любимой Манжарой в проекте MXE на сей раз полностью собрались все 8 комплектов Qt5 и Qt6! Вообще без единой ошибки. Но и тут ... LLVM, а соответственно, и Clang не собрались. Да и ладно! Такие вот дела. |
Сообщ.
#22
,
|
|
|
У меня такая-же проблема, как и у автора темы. Воспользовался Вашими советами по установке clang. Программы clang.exe и clang++.exe появились в директории mingw64. Но в комплекте для clang указана директория N:\msys64\clang64\clang++.exe. При этом возможности сменить директорию с программой нет (скриншот по ссылке https://disk.yandex.ru/i/oOWHVGNMbQPeAw). Как изменить в настройках комплекта путь? Я также не понял, как можно создать свой комплект со своими настройками (выбрать нужный набор компиляторов для С и С++, нужный QT в случае установки QT5 и QT6 и др.). Попытался сделать, компилятор для C выбрал, а компилятор дляя C++ выбрать не получилось, как ни старался.
|
Сообщ.
#23
,
|
|
|
Должно быть N:\msys64\clang64\bin\clang++.exe Цитата tumanovalex @ У меня такая-же проблема, как и у автора темы. Воспользовался Вашими советами по установке clang. Программы clang.exe и clang++.exe появились в директории mingw64. Но в комплекте для clang указана директория N:\msys64\clang64\clang++.exe. При этом возможности сменить директорию с программой нет (скриншот по ссылке https://disk.yandex.ru/i/oOWHVGNMbQPeAw). Как изменить в настройках комплекта путь? Я также не понял, как можно создать свой комплект со своими настройками (выбрать нужный набор компиляторов для С и С++, нужный QT в случае установки QT5 и QT6 и др.). Попытался сделать, компилятор для C выбрал, а компилятор дляя C++ выбрать не получилось, как ни старался. Рассказывать долго, сам решал проблемы научным тыком. Я лучше покажу на картинках, важные штуки при настройке я на скринах выделял красным. Настройки лучше всего проводить в порядке как на скринах, чтобы в конце концов все объединять в комплекты: Прикреплённая картинка
Прикреплённая картинка
Прикреплённая картинка
Прикреплённая картинка
Прикреплённая картинка
|
Сообщ.
#24
,
|
|
|
Спасибо огромное за скриншоты! Правильно ли я понял, что в предустановленных комплектах поменять пути к компилятору ( N:\msys64\clang64\bin\clang++.exe на N:\msys64\mingw64\bin\clang++.exe) не удастся и нужно создать свой комплект?
|
Сообщ.
#25
,
|
|
|
Цитата tumanovalex @ Спасибо огромное за скриншоты! Правильно ли я понял, что в предустановленных комплектах поменять пути к компилятору ( N:\msys64\clang64\bin\clang++.exe на N:\msys64\mingw64\bin\clang++.exe) не удастся и нужно создать свой комплект? В комплектах пути нельзя менять, но можно менять компиляторы комплекта(ов). Если тот компилятор определился неверно, можно сделать свой - и им заменить неправильный в комплекте. |
Сообщ.
#26
,
|
|
|
Судя по скриншоту № 3 Вам удалось установить clang в директорию msys64/clang. Когда я устанавливаю clang командой
pacman -S mingw-w64-x86_64-clang |
Сообщ.
#27
,
|
|
|
Цитата tumanovalex @ Судя по скриншоту № 3 Вам удалось установить clang в директорию msys64/clang. Когда я устанавливаю clang командой pacman -S mingw-w64-x86_64-clang то исполняемые файлы clang устанавливаются в директорию mingw64/bin. Как Вам это удалось? Сперва поиск: Прикреплённая картинка
А потом установка, но с учетом типа (ну или как его назвать): pacman -S clang64/mingw-w64-clang-x86_64-clang |
Сообщ.
#28
,
|
|
|
Спасибо большое, все установилось в clang64
|
Сообщ.
#29
,
|
|
|
Я попробовал сделать статическую релизную сборку Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt5_sta-Release для простого проекта. Прикрепил проект, исполняемый файл и результаты работы dumpbin. В результатах dumpbin указано, что программа зависит только от Qt6Widgets.dll, Qt6Core.dll, libc++.dll и библиотек Windows. Однако чтобы при запуске программы не появлялось сообщение об отсутствии нужных dll, кроме этих dll требуется рядом с программой разместить еще кучу других dll (libb2-1.dll, libharfbuzz-0.dll, libfreetype-6.dll, libdouble-conversion.dll и других), хотя при запуске программы появляется только пустое белое окно. Подскажите, пожалуйста, следующее:
1. Как определить, какие dll из директории clang64 нужны для автономного запуска программы на другом ПК. 2. Можно ли уменьшить число требуемых для запуска dll. 3. Можно ли сделать с помощью QTCreator программу, которая бы не требовала dll и ее можно было бы переносить одним исполняемым файлом без всяких dll на другой ПК. Прикреплённый файлqtProcFilesClang.zip (43,13 Кбайт, скачиваний: 28) |
Сообщ.
#30
,
|
|
|
Привет!
Отвечу в обратном порядке Цитата tumanovalex @ 3. Можно ли сделать с помощью QTCreator программу, которая бы не требовала dll и ее можно было бы переносить одним исполняемым файлом без всяких dll на другой ПК. Да, это называется статическая сборка (линковка) - все необходимое включается в исполняемый файл. Увы и ах, но с использованием Qt5/6 нужно ожидать размер исполняемого файла от 14Mb (примерно) и выше. Как говорится, здравствуй жЫр Цитата tumanovalex @ 2. Можно ли уменьшить число требуемых для запуска dll. Нельзя. Нужно столько, сколько нужно. А вот включать "лишние" не обязательно. К примеру, если в программе ты не используешь сетевые функции, то тебе не обязательно копировать в готовый проект Qt5Network.dll или Qt6Network.dll. Цитата tumanovalex @ 1. Как определить, какие dll из директории clang64 нужны для автономного запуска программы на другом ПК. Это отдельная, непростая тема. Желательно выучить наизусть мануал по ней. Это все касается деплоя проектов с динамической линковкой. Давно я таким не занимался, но отчетливо помню, что утилита windeployqt в свое время не все dll-ки подтягивала. А именно подтягивала dll-ки от Qt, а от самого компилятора С++ с его базовыми либами пропускала (типа libwinpthread-1.dll & etc.). Я точно помню, что искал прогу, которая показывала зависимости .exe и .dll от других .dll, и ею пошагово искал что от чего зависит. Но это было давно, лет 5-7 назад, в эпоху Qt 5.8 примерно. Может сейчас что-то стало лучше, не знаю - надо вопрос прокачать. А вообще, в наш век |
Сообщ.
#31
,
|
|
|
Спасибо за подробные ответы. Попробую сам найти программу для определения нужных dll. При выборе комплекта со статической линковкой при запуске программы опять требуются многочисленные dll (скриншоты прикрепил). Как правильно настроить qtcreator, чтобы создавался исполняемый файл без dll?
Прикреплённая картинка
Прикреплённая картинка
Добавлено Задал вопрос о программе для определния нужных dll, получил ссылки (https://www.cyberforum.ru/qt/thread3164758.html#post17286537) |
Сообщ.
#32
,
|
|
|
Может быть нужно что-то подравить в CMakeLists.txt, чтобы была статическая компановка?
|
Сообщ.
#33
,
|
|
|
Цитата tumanovalex @ Может быть нужно что-то подравить в CMakeLists.txt, чтобы была статическая компановка? Думаю, что можно. Но это будет очень сложно. Проще вариант - использовать уже готовые к этому сборки (комплекты). Проще - это не в 1-2 раза, а в 1-2 порядка. |
Сообщ.
#34
,
|
|
|
Как видно на скриншоте, я выбрал при сборке выпуска именно комплект static. Вот только при запуске программы все равно требуется много dll. Что я делаю неправильно?
|
Сообщ.
#35
,
|
|
|
Ну так по одному скрину трудно сказать что не так. Покажи настройки в этом комплекте.
|
Сообщ.
#36
,
|
|
|
По адресу https://disk.yandex.ru/d/9AuscdCoY9hdQg разместил видео, в котором постарался показать все настройки. Какая еще нужна информация для того, чтобы все-таки разобраться, почему не происходит статической линковки? На всязки случай размещаю сообщения, которые появляются при сборке
[cmake] Работа N:\msys64\clang64\bin\cmake.exe -S N:/MyProgramming/qtClangCmake -B N:/MyProgramming/qtClangCmake/build/Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Debug "-DCMAKE_GENERATOR:STRING=Ninja" "-DCMAKE_BUILD_TYPE:STRING=Debug" "-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=N:\MyProgramming\qtClangCmake\build\Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Debug/.qtc/package-manager/auto-setup.cmake" "-DQT_QMAKE_EXECUTABLE:FILEPATH=N:/msys64/clang64/qt6-static/bin/qmake.exe" "-DCMAKE_PREFIX_PATH:PATH=" "-DCMAKE_C_COMPILER:FILEPATH=N:/msys64/clang64/bin/clang.exe" "-DCMAKE_CXX_COMPILER:FILEPATH=N:/msys64/clang64/bin/clang++.exe" на N:\MyProgramming\qtClangCmake\build\Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Debug. [cmake] -- The CXX compiler identification is Clang 18.1.4 [cmake] -- Detecting CXX compiler ABI info [cmake] -- Detecting CXX compiler ABI info - done [cmake] -- Check for working CXX compiler: N:/msys64/clang64/bin/clang++.exe - skipped [cmake] -- Detecting CXX compile features [cmake] -- Detecting CXX compile features - done [cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD [cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed [cmake] -- Check if compiler accepts -pthread [cmake] -- Check if compiler accepts -pthread - yes [cmake] -- Found Threads: TRUE [cmake] -- Performing Test HAVE_STDATOMIC [cmake] -- Performing Test HAVE_STDATOMIC - Success [cmake] -- Found WrapAtomic: TRUE [cmake] -- Found WrapVulkanHeaders: N:/msys64/clang64/include [cmake] -- Configuring done (0.0s) [cmake] -- Generating done (0.0s) [cmake] -- Build files have been written to: N:/MyProgramming/qtClangCmake/build/Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Debug [cmake] [cmake] Прошло времени: 00:07. [cmake] Работа N:\msys64\clang64\bin\cmake.exe -S N:/MyProgramming/qtClangCmake -B N:/MyProgramming/qtClangCmake/build/Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Release "-DCMAKE_GENERATOR:STRING=Ninja" "-DCMAKE_BUILD_TYPE:STRING=Release" "-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=N:\MyProgramming\qtClangCmake\build\Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Release/.qtc/package-manager/auto-setup.cmake" "-DQT_QMAKE_EXECUTABLE:FILEPATH=N:/msys64/clang64/qt6-static/bin/qmake.exe" "-DCMAKE_PREFIX_PATH:PATH=" "-DCMAKE_C_COMPILER:FILEPATH=N:/msys64/clang64/bin/clang.exe" "-DCMAKE_CXX_COMPILER:FILEPATH=N:/msys64/clang64/bin/clang++.exe" на N:\MyProgramming\qtClangCmake\build\Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Release. [cmake] -- The CXX compiler identification is Clang 18.1.4 [cmake] -- Detecting CXX compiler ABI info [cmake] -- Detecting CXX compiler ABI info - done [cmake] -- Check for working CXX compiler: N:/msys64/clang64/bin/clang++.exe - skipped [cmake] -- Detecting CXX compile features [cmake] -- Detecting CXX compile features - done [cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD [cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed [cmake] -- Check if compiler accepts -pthread [cmake] -- Check if compiler accepts -pthread - yes [cmake] -- Found Threads: TRUE [cmake] -- Performing Test HAVE_STDATOMIC [cmake] -- Performing Test HAVE_STDATOMIC - Success [cmake] -- Found WrapAtomic: TRUE [cmake] -- Found WrapVulkanHeaders: N:/msys64/clang64/include [cmake] -- Configuring done (0.0s) [cmake] -- Generating done (0.0s) [cmake] -- Build files have been written to: N:/MyProgramming/qtClangCmake/build/Desktop_Qt_static_MinGW_w64_CLANG64_MSYS2_qt6_sta-Release [cmake] [cmake] Прошло времени: 00:08. Прикреплённый файлqtClangCmake.zip (2,33 Кбайт, скачиваний: 31) |
Сообщ.
#37
,
|
|
|
Цитата tumanovalex @ Помогите, пожалуйста, разобраться, почему у Вас получается, а у меня нет. Проект прикрепил. Хм ... дело в том, что я не пользую cmake для сборки, а по старинке qmake. В прикрепленном проекте на всех моих комплектах получаю "Программа cmake не настроена ....". Попробую разобраться, но не сейчас. Ничего не обещаю. |
Сообщ.
#38
,
|
|
|
Я и не жду обещаний, спасибо что помогаете разобраться. Попробую сделать проект с qmake. О результатах сообщу.
|
Сообщ.
#39
,
|
|
|
Попробовал с qmake. Получается, что рабочие комплекты только shared. Видео https://disk.yandex.ru/d/KHEvNjvvZusy-A. С cmake статически собрались конфигурации с MinGw, c Clang - опять требует dll.
|
Сообщ.
#40
,
|
|
|
Проверил на другом компьютере без установленных компилятора и библиотек статическую сборку MinGw. Все равно требует dll (скриншоты прикрепил). Размер скомпилированной программы - 167 кб, вряд ли при таком размере в нее включены все нужные библиотеки. Только непонятно, почему при переносе програмы с учтановленными компилятом и библиотеками на другие диски и директории программа на том же компьютере она все равно запускается. Может быть в нее встроены пути к библиотекам на данном компьютере?
Прикреплённая картинка
Прикреплённая картинка
Прикреплённая картинка
Прикреплённая картинка
Прикреплённая картинка
|
Сообщ.
#41
,
|
|
|
По-моему, дело было в том, что я не установил qt6-static. Я думал, что они автоматом поставились, раз есть комплект static. После этого я попытался создать проект qtQmake, получил кучу сообщений о неправильных ссылках и программа не скомпилировалась. Попробую с установленным qt5-ststic.
|
Сообщ.
#42
,
|
|
|
Попробовал с qt5. Размер файла стал 18,5 Мб. Программа, скомпилированная с помощью qmake в статическом выпуске, запустилась без всяких сообщений на компьютере без библиотек.
Добавлено Вот какие ошибки возникли для QT6 при установленном qt-static :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x190): undefined reference to `gr_make_face_with_ops' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x236): undefined reference to `gr_face_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x396): undefined reference to `gr_face_featureval_for_lang' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x3b6): undefined reference to `gr_face_find_fref' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x3ca): undefined reference to `gr_fref_set_feature_value' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x46d): undefined reference to `gr_make_seg' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x485): undefined reference to `gr_seg_n_slots' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x5c6): undefined reference to `gr_seg_first_slot' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x5ff): undefined reference to `gr_slot_before' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x60a): undefined reference to `gr_slot_after' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x614): undefined reference to `gr_slot_gid' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x689): undefined reference to `gr_slot_can_insert_before' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x6f6): undefined reference to `gr_slot_origin_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x76d): undefined reference to `gr_slot_next_in_segment' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x846): undefined reference to `gr_seg_first_slot' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x881): undefined reference to `gr_slot_advance_Y' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x89b): undefined reference to `gr_slot_next_in_segment' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x8af): undefined reference to `gr_slot_origin_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x8d2): undefined reference to `gr_slot_origin_Y' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x977): undefined reference to `gr_seg_advance_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x9d0): undefined reference to `gr_slot_origin_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xa2e): undefined reference to `gr_featureval_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xa38): undefined reference to `gr_seg_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xb32): undefined reference to `gr_seg_advance_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xb46): undefined reference to `gr_seg_first_slot' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xb89): undefined reference to `gr_slot_advance_Y' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xba3): undefined reference to `gr_slot_origin_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xbe0): undefined reference to `gr_slot_origin_Y' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc03): undefined reference to `gr_slot_next_in_segment' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc3e): undefined reference to `gr_featureval_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc61): undefined reference to `gr_featureval_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc6b): undefined reference to `gr_seg_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc85): undefined reference to `gr_seg_first_slot' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xc8d): undefined reference to `gr_slot_origin_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xca4): undefined reference to `gr_seg_advance_X' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xcdb): undefined reference to `gr_featureval_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0xce5): undefined reference to `gr_seg_destroy' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-uniscribe.cc.obj):(.text+0x5e3): undefined reference to `ScriptFreeCache' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-uniscribe.cc.obj):(.text+0x723): undefined reference to `__imp_UuidCreate' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-uniscribe.cc.obj):(.text+0x71): undefined reference to `ScriptPlace' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-uniscribe.cc.obj):(.text+0xc8): undefined reference to `ScriptShape' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libharfbuzz.a(hb-uniscribe.cc.obj):(.text+0xdb): undefined reference to `ScriptItemize' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libfreetype.a(src_bzip2_ftbzip2.c.obj):(.text+0x6c): undefined reference to `BZ2_bzDecompressEnd' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libfreetype.a(src_bzip2_ftbzip2.c.obj):(.text+0x11d): undefined reference to `BZ2_bzDecompress' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libfreetype.a(src_bzip2_ftbzip2.c.obj):(.text+0x32a): undefined reference to `BZ2_bzDecompressEnd' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libfreetype.a(src_bzip2_ftbzip2.c.obj):(.text+0x380): undefined reference to `BZ2_bzDecompressInit' :-1: ошибка: N:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../lib\libfreetype.a(src_bzip2_ftbzip2.c.obj):(.text+0x612): undefined reference to `BZ2_bzDecompressInit' :-1: ошибка: collect2.exe: error: ld returned 1 exit status :-1: ошибка: [Makefile.Release:74: release/qtQmake.exe] Error 1 |
Сообщ.
#43
,
|
|
|
Засел я за разборки у себя, угрохал почти половину дня. Но результат, который меня устроил, я получил. Напишу основные моменты ...
1) Снес 13 версию QtCreator, вычистил все профиля, удалив: AppData\Local\QtProject AppData\Roaming\QtProject оставил только: AppData\Roaming\Qt Установил QtCreator 12.0.2. Причина простая - 13-я версия глючит с генераторами для CMake (не определяет нормально Ninja), с 12-й версией такого нет. 2) Наборы cmake установил, как делал раньше: Прикреплённая картинка
3) Отладчики также установил как обычно, использовал LLDB Прикреплённая картинка
4) Установил набор компиляторов Прикреплённая картинка
Вот тут много важных мелочей! На примере одного из компиляторов: Прикреплённая картинка
Все обведенное красным важно установить, чтобы не было ругни системы сборок. Тип компиляторов при добавлении выбираем "Другой". Это позволит более детально настраивать. Пути к заголовочным файлам указываем вручную для каждого компилятора свои. В большей части это нужно для чекера clangd, который проверяет код прямо во время набора. Некоторые товарищи ленятся его настраивать таким образом и используют cppcheck, но мы не ищим лёгких путей Благо clangd более тщательно проверяет. Мои настройки таких путей, как на моем скрине выше, в том же порядке, и для С, и для С++: E:/Tools/MSys64/clang32/include E:/Tools/MSys64/clang32/include/c++/v1 E:/Tools/MSys64/clang32/lib/clang/18/include E:/Tools/MSys64/clang32/include E:/Tools/MSys64/clang32/include/c++/v1 E:/Tools/MSys64/clang32/lib/clang/18/include E:/Tools/MSys64/clang64/include E:/Tools/MSys64/clang64/include/c++/v1 E:/Tools/MSys64/clang64/lib/clang/18/include E:/Tools/MSys64/clang64/include E:/Tools/MSys64/clang64/include/c++/v1 E:/Tools/MSys64/clang64/lib/clang/18/include E:/Tools/MSys64/mingw32/include E:/Tools/MSys64/mingw32/include/c++/13.2.0 E:/Tools/MSys64/mingw32/include/c++/13.2.0/i686-w64-mingw32 E:/Tools/MSys64/mingw32/lib/gcc/i686-w64-mingw32/13.2.0/include E:/Tools/MSys64/mingw64/include E:/Tools/MSys64/mingw64/include/c++/13.2.0 E:/Tools/MSys64/mingw64/include/c++/13.2.0/x86_64-w64-mingw32 E:/Tools/MSys64/mingw32/lib/gcc/x86_64-w64-mingw32/13.2.0/include E:/Tools/MSys64/ucrt64/include E:/Tools/MSys64/ucrt64/include/c++/13.2.0 E:/Tools/MSys64/ucrt64/include/c++/13.2.0/x86_64-w64-mingw32 E:/Tools/MSys64/ucrt64/lib/gcc/x86_64-w64-mingw32/13.2.0/include Часть компиляторов с постфиксом "-static" нужно было продублировать, но для статики изменить ABI компилятора на "unknown" вместо "msys": Прикреплённая картинка
Не знаю почему, но часть Qt-static были собраны именно с таким ABI. 5) Устанавливаем Qt Желательно выбирать названия qmake или qmake6 как у меня на скрине: Прикреплённая картинка
6) Собираем комплекты Опять же см. скрин, детали важны: Прикреплённая картинка
Результат Получаем 18 комплектов. Системы сборки QMake и CMake работают обе. В качестве компиляторов используется только Clang, в качестве отладчика LLDB. Важное замечание Не знаю, какого лешего, но все статические сборки всё равно тянут за собой динамически libzstd.dll и zlib1.dll. Для того, чтобы их влинковывать статически в будущем посмотрю файлы mkspec. Ну а пока решение "в лоб" ... Для системы сборки QMake добавляем в файл проекта строчку: LIBS += -lzstd -lz Для системы сборки CMake меняем строчку: target_link_libraries(TestCmake PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) на target_link_libraries(TestCmake PRIVATE Qt${QT_VERSION_MAJOR}::Widgets zstd z) The end |
Сообщ.
#44
,
|
|
|
Спасибо за объяснения и скриншоты. Возникли следующие вопросы, по которым хотелось бы узнать Ваше мнение:
1. Такие проблемы возникают только при статической линковке? 2. Такие проблемы обусловлены использованием msys2 и при использовании комплектов QT, которые имеются на различных ресурсах, таких проблеме не будет? 3. Предложенное Вами решение не позволит в дальнейшем обновлять qtcreator с помощью msys2? 4. Такие проблемы возникают только в Windows и не будут возникать для других ОС? |
Сообщ.
#45
,
|
|
|
Цитата tumanovalex @ 1. Такие проблемы возникают только при статической линковке? 2. Такие проблемы обусловлены использованием msys2 и при использовании комплектов QT, которые имеются на различных ресурсах, таких проблеме не будет? Тут "черный ящик". То, что я писал - результат анализа установок, откатов, проб других вариантов. Я тут только могу развести руками. Цитата tumanovalex @ Предложенное Вами решение не позволит в дальнейшем обновлять qtcreator с помощью msys2? Да, мое решение не позволит. Я QtCreator использую как внешний инструмент, не связанный с MSYS2. И, в данный момент, я видать не ошибся в своем решении. Цитата tumanovalex @ Такие проблемы возникают только в Windows и не будут возникать для других ОС? Тут даже Линус Товальдс должен креститься по три раза на день ... ну кто же его знает. tumanovalex, немножко по теме, и немножко нет... В свое время в Минске (в районе 2003-2005 годов) пооткрывали киоски быстрого питания, наверное армяне. В рационе был вкуснейший кебаб на деревянной палочке, картошка фри, маринованный лук, ну там майонез и кетчуп, и я еще покупал к этому томатный сок и пол стакана сметаны. Потом все это позакрывали, снесли. А я до сих пор вспоминаю - аж слюнки текут. Вот считай, это теперешняя аналогия MSYS2. Но этот проект сейчас живет и радует. Не упусти радость. Но это увы - не "ресторан". Там нет очень важного инструмента valgrind! Для этого я содержу и поддерживаю в актуальном состоянии две Linux-системы под VMWare - Linux Manjaro и ArchLinux. Вот это, считай, можно считать "рестораном". Там и нативные системы сборки есть, с тем же valgrind, и система кросс-сборок MXE. Но везде, конечно, есть свои плюсы и минусы. К примеру, в одном из своих последних проектов мне пришлось отлаживать подсистему считывания магнитных карточек. Реализация - чисто и чистейше виндовая (время торопило). Вот тут именно MSYS2 нереально помог. Из-под виндовса отладка норм, а вот из-под линукса пришлось бы настраивать отладку из-под Wine - а это еще тот гемор. Резюме Не бойся осваивать новое, не бойся экспериментировать самостоятельно. Да, будут "промежуточные" бесполезные знания. Но и будет поднятие твоего экспиренса, да и чуйку прокачаешь. |
Сообщ.
#46
,
|
|
|
Спасибо за ответ. Полностью согласен с выводами. Буду изучать QT, инструменты и пытаться реализовать полученные знания на практике.
|