vpyk / emu80v4

Emu80 emulator v.4 source code
GNU General Public License v3.0
65 stars 25 forks source link

Failed to build with Qt 5.15 and GCC 11.2 #18

Open Selorax opened 1 year ago

Selorax commented 1 year ago
$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_DEPRECATED_WARNINGS -DPAL_QT -DQT_NO_DEBUG -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib64/qt/mkspecs/linux-g++ -Isrc -I/usr/lib64/qt/include/QtCore -I/usr/lib64/qt/include/QtGui -I/usr/lib64/qt/include/QtMultimedia -I/usr/lib64/qt/include -Ibuild/moc -Ibuild/ui -I. -o build/obj/qtChoosePlatformDialog.o src/qt/qtChoosePlatformDialog.cpp
In file included from src/qt/qtChoosePlatformDialog.cpp:21:
src/qt/qtChoosePlatformDialog.h:43:52: error: ‘QModelIndex’ does not name a type
   43 |     void on_platformListWidget_doubleClicked(const QModelIndex &index);
      |                                                    ^~~~~~~~~~~
src/qt/qtChoosePlatformDialog.cpp:69:6: error: no declaration matches ‘void ChoosePlatformDialog::on_platformListWidget_doubleClicked(const QModelIndex&)’
   69 | void ChoosePlatformDialog::on_platformListWidget_doubleClicked(const QModelIndex &index)
      |      ^~~~~~~~~~~~~~~~~~~~
In file included from src/qt/qtChoosePlatformDialog.cpp:21:
src/qt/qtChoosePlatformDialog.h:43:10: note: candidate is: ‘void ChoosePlatformDialog::on_platformListWidget_doubleClicked(const int&)’
   43 |     void on_platformListWidget_doubleClicked(const QModelIndex &index);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/qt/qtChoosePlatformDialog.h:32:7: note: ‘class ChoosePlatformDialog’ defined here
   32 | class ChoosePlatformDialog : public QDialog
      |       ^~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:1861: build/obj/qtChoosePlatformDialog.o] Error 1
Selorax commented 1 year ago

Oops, I was building with Qt4 by mistake. The command in readme suggested to use qmake which used headers from /usr/include/qt, while the actual command was qmake-qt5 which used headers from /usr/include/qt5

Selorax commented 1 year ago

Отдельный баг-репорт не хочу делать, поэтому вот. В мануале .rtf опечатка:

volume – громкость звука, может принимать значения от 1 до 7 (6 — максимальная htrjvtyletvfz громкость, при значении 7 возможны щелчки и искажения звука).

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

vpyk commented 1 year ago

Спасибо за багрепорт!

Версия qmake по умолчанию, вероятно, зависит от дистрибутива. Там, где я обычно тестирую, qmake имеет правильную версию, а версия для Qt4 присутствует под именем qmake-qt4. Сделаю замечание по этому поводу в инструкции по сборке. А по хорошему, нужно бы, конечно, перейти на cmake...

Опечатку исправлю, что же касается формата - форматирование терять я не хочу; может быть достаточно было бы хотя бы возможностей того же markdown, но также хотелось бы, чтобы документ открывался в любых поддерживаемых целевых платформах, в том числе достаточно старых, например Windows XP. Особой альтернативы rtf я здесь не вижу, разве что html...

Selorax commented 1 year ago

А по хорошему, нужно бы, конечно, перейти на cmake...

Но зачем? qmake вроде работает нормально.


Для документации есть много форматов. Я бы предложил выбрать какой-нибудь формат, который вам лично больше нравится, из тех где исходник в plain text и редактируется без специального редактора, что-нибудь вроде AsciiDoc, troff, mdoc, markdown и подобных. А потом уже можно конвертировать в rtf, html и прочие форматы автоматически. Главное, взять текстовый формат исходника, который можно прочитать даже, не имея софта.


По-моему, в документации не помешало бы описание встроенного дебаггера. Назначение некоторых полей не совсем понятно.


А насколько сложно было бы добавить к эмулятору дополнительные устройства управления кроме клавиатуры и дисплея, например клавиатуру и семисегментный индикатор от ЮТ-88 или панель с тумблерами и светодиодами как в альтаире?

vpyk commented 1 year ago

Cmake обладает большей функциональностью и уже используется по умолчанию в Qt6, qmake был объявлен устаревшим.

Идея насчет документации принята, подумаю. В любом случае, это требует дополнительных усилий по преобразованию формата, а пока есть незавершенные более приоритетные доработки. Документация, к сожалению, далеко не полная, действительно описание отладчика пока отсутствует, со временем добавлю, также уже в ближайших версиях в отладчике появится меню и панель инструментов.

Степень сложности добавления вышеупомянутых устройств сильно зависит от конкретной реализации. Например, экранная клавиатура в эмуляторе не предусмотрена, это потребует бОльших усилий, чем просто назначить клавиши клавишам PC. Что же касается семисегментного индикатора, то это не выглядит слишком сложным, просто сделать еще один вариант отрисовщика экрана. Но, опять-таки, есть нюансы, а наработок в этом направлении нет, оттолкнуться в данный момент не от чего...