Closed GeorgKZ closed 1 year ago
К сожалению не всё применилось((
GGEASY.patch:6956: trailing whitespace.
const int scale_error_i = 2; // non-fatal
GGEASY.patch:6957: trailing whitespace.
const int non_pair_error_i = 4; // non-fatal
GGEASY.patch:7335: trailing whitespace.
inline Path<T1> ScalePath(const Path<T2>& path,
GGEASY.patch:7351: trailing whitespace.
[scale_x, scale_y](const auto& pt)
GGEASY.patch:7355: trailing whitespace.
[scale_x, scale_y](const auto& pt)
error: patch failed: GERBER_X3/CMakeLists.txt:10
error: GERBER_X3/CMakeLists.txt: patch does not apply
error: patch failed: GERBER_X3/plugins/file/file_plugins_en.ts:1
error: GERBER_X3/plugins/file/file_plugins_en.ts: patch does not apply
error: patch failed: GERBER_X3/plugins/file/file_plugins_ru.ts:19
error: GERBER_X3/plugins/file/file_plugins_ru.ts: patch does not apply
error: patch failed: GERBER_X3/plugins/file/gerber/file_gerber_en.ts:1
error: GERBER_X3/plugins/file/gerber/file_gerber_en.ts: patch does not apply
error: patch failed: GERBER_X3/plugins/file/gerber/file_gerber_ru.ts:170
error: GERBER_X3/plugins/file/gerber/file_gerber_ru.ts: patch does not apply
error: patch failed: GERBER_X3/plugins/gcode/gc_file.cpp:439
error: GERBER_X3/plugins/gcode/gc_file.cpp: patch does not apply
error: patch failed: GERBER_X3/plugins/gcode/gcode_en.ts:1
error: GERBER_X3/plugins/gcode/gcode_en.ts: patch does not apply
error: patch failed: GERBER_X3/plugins/gcode/gcode_ru.ts:27
error: GERBER_X3/plugins/gcode/gcode_ru.ts: patch does not apply
error: patch failed: GERBER_X3/plugins/gcode/pocketoffset/pocketoffset_form.cpp:26
error: GERBER_X3/plugins/gcode/pocketoffset/pocketoffset_form.cpp: patch does not apply
error: GERBER_X3/plugins/gcode/profile/prof_file.cpp: No such file or directory
error: patch failed: GERBER_X3/plugins/gcode/thermal/thermal_form.h:77
error: GERBER_X3/plugins/gcode/thermal/thermal_form.h: patch does not apply
error: patch failed: GERBER_X3/plugins/gcode/voroni/voronoi_boost.cpp:18
error: GERBER_X3/plugins/gcode/voroni/voronoi_boost.cpp: patch does not apply
error: GERBER_X3/plugins/gcode/voroni/voronoi_file.cpp: No such file or directory
error: patch failed: GERBER_X3/plugins/shape/CMakeLists.txt:56
error: GERBER_X3/plugins/shape/CMakeLists.txt: patch does not apply
Пулреквестом лучше было бы. Придётся ручками и глазами добивать.
Я извиняюсь, поторопился с выкладиванием. Вот тут архив: https://drive.google.com/file/d/1XjHG_CIRC9Hl6Hk7TygCrw8mUmjbHwDp/view?usp=sharing почистил, разобрал и подписал что для чего нужно. Для справки вот https://drive.google.com/file/d/1OCGojDlqDImpaBTNL6Pmd_dKEAXLpjJZ/view?usp=sharing вариант с применёнными патчами, чтобы было понятно, какие файлы обработаны. Исходный архив, к которому были применены патчи: https://drive.google.com/file/d/1OCysd5PdZ1tZ9mZcKzWLzUuUePFHemsU/view?usp=sharing
Собирал под Линукс примерно так (в /usr/local/Qt-6.4.2-shared/ был собран Qt):
ulimit -n 2048
CMAKE_PREFIX_PATH="/usr/local/Qt-6.4.2-shared/lib/cmake" PATH="/usr/local/Qt-6.4.2-shared/bin:$PATH" BUILDDIR="../GGEASY-build-6.4.02-shared-deb" SRCDIR="../GGEASY"
cmake -G Ninja "-DCMAKE_EXE_LINKER_FLAGS=-pthread" -DCMAKE_BUILD_TYPE=Debug -S ${SRCDIR} -B ${BUILDDIR}
cmake --build ${BUILDDIR} --target update_translations --target all --parallel > build_6.4.02_shared_deb_log.txt
cp -fs /usr/local/Qt-6.4.2-shared/translations/qtbase_ru.qm ../GGEASY/bin/Qt6.4_gnu_d_x64/translations/ cp -fs /usr/local/Qt-6.4.2-shared/translations/qtbase_en.qm ../GGEASY/bin/Qt6.4_gnu_d_x64/translations/
Почему через гитхаб не захотели мне изменения залить? Гляну. Чищу код пока, многое не нравится. Ну и как по вашему мой кодинг?))
Я пока с гитхабом как-то не общался, только начал пробовать.
Если по моим предложениям будут вопросы - пишите, постараюсь подробно ответить.
Кодинг нормальный, только непривычно много новшеств C++. Я пока только 11-е нововведения смотрю, а уже 20й вовсю используется. А ведь только недавно Фортран на перфокартах был...
И по личному мнению, неплохо было бы доксигенности добавить - ну это в основном для облегчения другим разбираться, что есть что. Для примера комментирования вывалил исходники неспешно ваяемой программки (https://github.com/GeorgKZ/stl2step) - вот типа такого, со ссылками на ISO 06983-1-2009 и т.п.
Обнаружил у себя ошибку: в файле voronoi_boost.cpp по хорошему надо было так: ` #if defined(_MSC_VER)
#pragma warning(disable : 5055)
#elif defined(__GNUC__) && (__GNUC__ >= 7)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpragmas"
#pragma GCC diagnostic ignored "-Wdeprecated-enum-float-conversion"
#endif /* _MSC_VER, __GNUC__ */
#include "voronoi_visual_utils.h"
#include <boost/polygon/polygon.hpp>
#include <boost/polygon/voronoi.hpp>
#if defined(_MSC_VER)
#pragma warning(pop)
#elif defined(__GNUC__) && (__GNUC__ >= 7)
#pragma GCC diagnostic pop
#endif /* _MSC_VER, __GNUC__ */
` а то в том варианте при сборке MS VCPP этот блок пропускался, выходила ошибка сборки.
И ещё про сборку для Windows. Вот в этом фрагменте CMakeLists.txt для исполняемого файла:
set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER xr.ggeasy.com MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE )
Если закомментировать или убрать WIN32_EXECUTABLE TRUE (то есть в опциях линкера заменить /subsystem:windows на /subsystem:console), то восстанавливается вывод в консоль - все предупреждения, qDebug и т.д. Возможно, стоит ввести отдельный флаг сборки (для переключения этого параметра) для удобства отладки. Ну или отметить комментарием такую возможность.
На линукс-сборку это не влияет - там вывод в консоль идёт в любом случае.
По статической сборке вы имели в виду Qt`овские библиотеки?
Не только. Я имел в виду статическую сборку Вашей программы - для этого необходимо конечно использовать статически собранный вариант Qt, а в Вашей программе все плюгины и все библиотеки Qt будут интегрированы в единый исполняемый файл. Правда, "универсальный" (то есть, если собирать динамически с динамическим Qt, то получится как раньше, а если статически со статически собранным Qt - то единым исполняемым файлом) вариант, насколько я понял, получится только с Qt с 6й версии - с использованием для плюгинов вместо
add_library(rectangle SHARED rectangle.json shrectangle.cpp shrectangle.h )
конструкции
qt_add_plugin(rectangle CLASS_NAME PluginRect) target_sources(rectangle PRIVATE rectangle.json shrectangle.cpp shrectangle.h )
где PluginRect - это бывший class Plugin, и в основной программе для подключения плюгинов прямое обращение к объектам вместо файлов:
`#else // STATIC_LINK
QObject* objects[] = {
new Gerber::PluginGerber(),
new Dxf::PluginDxf(),
new Excellon::PluginExcellon(),
new Hpgl::PluginHpgl(),
new Shapes::PluginCircle(),
new Shapes::PluginArc(),
new Shapes::PluginRect(),
new Shapes::PluginText(),
new Shapes::PluginPoly(),
nullptr};
for (auto s = &objects[0]; *s != nullptr; ++ s) {
QObject* pobj = *s;
if (auto file = qobject_cast<FilePluginInterface*>(pobj); pobj && file) {
App::filePlugins().emplace(file->type(), PIF { file, pobj });
continue;
}
if (auto shape = qobject_cast<ShapePluginInterface*>(pobj); pobj && shape) {
App::shapePlugins().emplace(shape->type(), PIS { shape, pobj });
continue;
}
}
`
Когда нибудь)) когда АПИ устаканится, я на оборот монолит распилил что бы в будущем добавлять функциональности проще было. Сейчас репу чешу в сторону https://gitlab.com/inkscape/lib2geom Но её что то собрать не очень выходит.
Это для ветки dev_clipper_2 недельной давности. Убирал предупреждения при сборке, некоторые предупреждения при работе, доделывал русификацию. Собирал под Qt-6.4.2 под Линукс.
Ещё в принципе есть наработки статической сборки под Ликус и Windows, но для Qt с 6й версии.
Патч положил тут: https://drive.google.com/file/d/1XCASbYDJGWnU7nu364RmKggseki_C2Wx/view?usp=sharing