Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OS: Windows #2

Closed
zvezdochiot opened this issue Jul 27, 2023 · 136 comments
Closed

OS: Windows #2

zvezdochiot opened this issue Jul 27, 2023 · 136 comments
Assignees
Labels
complete Performed help wanted Extra attention is needed question Further information is requested

Comments

@zvezdochiot
Copy link
Member

zvezdochiot commented Jul 27, 2023

Hi @plzombie , @trufanov-nok .

Интересует возможность сборки последнего релиза под винду. Уверен, что на этот раз "проблем" со сборкой будет поболее чем со ScanTailor Advanced. Ежели для сборки понадобятся изменение файлов cmake, вносите смело. Для повышения шансов на успех прилагаю свои сборочные файлы: scantailor-experimental-0.2023.07.27-build.zip (Linux devuan-zvezdochiot 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux) screen-threshold
@zvezdochiot zvezdochiot self-assigned this Jul 27, 2023
@zvezdochiot zvezdochiot added help wanted Extra attention is needed question Further information is requested labels Jul 27, 2023
@plzombie
Copy link
Contributor

@zvezdochiot Я правильно понимаю, что -experimental использует OpenCL?

@plzombie
Copy link
Contributor

Класс. Я вот добрался до Eigen, скачал бинарник, иии - меня встречает файл cmake. А ещё оказалось, что это "кроссплатформенное программное обеспечение" не поддерживает visualstudio 2019 и требует компилятор фортрана. Можешь сюда уже собранные инклуды скинуть?

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Jul 27, 2023

Hi @plzombie .

Да. Но опционально. У меня собрался без него:

ldd /usr/bin/scantailor-experimental
        linux-vdso.so.1 (0x00007ffdc4b88000)
        libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007fa95d7cc000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fa95d792000)
        libjpeg.so.62 => /usr/lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007fa95d70e000)
        libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007fa95d6b4000)
        libQt5Xml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007fa95d670000)
        libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007fa95cfe6000)
        libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fa95c922000)
        libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fa95c3d7000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa95c20a000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa95c0c6000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa95c0ac000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa95bed8000)
        libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007fa95be6d000)
        libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fa95bd92000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fa95bd6a000)
        libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007fa95bb5c000)
        libdeflate.so.0 => /usr/lib/x86_64-linux-gnu/libdeflate.so.0 (0x00007fa95bb40000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa95bb23000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa95baff000)
        libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fa95ba78000)
        libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fa95b990000)
        libmd4c.so.0 => /usr/lib/x86_64-linux-gnu/libmd4c.so.0 (0x00007fa95b97e000)
        libdouble-conversion.so.3 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.3 (0x00007fa95b967000)
        libicui18n.so.67 => /usr/lib/x86_64-linux-gnu/libicui18n.so.67 (0x00007fa95b661000)
        libicuuc.so.67 => /usr/lib/x86_64-linux-gnu/libicuuc.so.67 (0x00007fa95b476000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa95b470000)
        libpcre2-16.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007fa95b3e5000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fa95b2b6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa95db42000)
        libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fa95b1fe000)
        libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fa95b1c8000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fa95b105000)
        libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fa95b0d9000)
        libicudata.so.67 => /usr/lib/x86_64-linux-gnu/libicudata.so.67 (0x00007fa9595c0000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fa95954d000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa959408000)
        libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fa9593fa000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fa9593cf000)
        libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fa9593ac000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fa9593a7000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fa95919f000)
        libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fa959188000)
        libmd.so.0 => /usr/lib/x86_64-linux-gnu/libmd.so.0 (0x00007fa95917b000)

Отличия от STA: STA пользует ещё libQt5Svg.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5. Всё

❓ То есть, что именно, помимо build, надо скинуть?

@plzombie
Copy link
Contributor

У меня сейчас пишет:

-- Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) (Required is at least version "2.91.0")
CMake Error at CMakeLists.txt:162 (MESSAGE):
  Could not find Eigen (version 3) headers.

  You may need to install Eigen3 or set EIGEN3_INCLUDE_DIR manually.

Сам Eigen под винду не собирается. Нужен, собственно, собранный под линуксом. Желательно для mingw

Мало того, у меня сейчас пишет вот что:

f:\NonOfMyBusiness\scantailor-experimental-main\build>cmake -D OpenCL_LIBRARY=f:\NonOfMyBusiness\OpenCL-SDK-v2023.04.17-Win-x64\ -D OpenCL_INCLUDE_DIR=f:\NonOfMyBusiness\OpenCL-SDK-v2023.04.17-Win-x64\include\ -D DEPS_BUILD_DIR=f:\NonOfMyBusiness\scantailor\libs\ -D Qt5Core_DIR=f:\NonOfMyBusiness\scantailor\libs\Qt\lib\cmake\Qt5Core\ ..
-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.19045.
CMake Error at CMakeLists.txt:145 (INCLUDE):
  INCLUDE could not find requested file:

    F:/NonOfMyBusiness/scantailor/libs/export-vars.cmake


CMake Error at CMakeLists.txt:174 (FIND_PACKAGE):
  By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Qt5Core", but
  CMake did not find one.

  Could not find a package configuration file provided by "Qt5Core"
  (requested version 5.3) with any of the following names:

    Qt5CoreConfig.cmake
    qt5core-config.cmake

  Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
  "Qt5Core_DIR" to a directory containing one of the above files.  If
  "Qt5Core" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!

f:\NonOfMyBusiness\scantailor-experimental-main\build>

Ума не приложу, что ему надо

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Jul 27, 2023

Hi @plzombie .

А cmake --trace .. что даёт?

И также cmake -D ENABLE_OPENGL=OFF ..?

И надо как то помочь ему найти Qt5. https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/tree/main/packaging/windows никак не поможет?

@plzombie
Copy link
Contributor

А cmake --trace .. что даёт?

F:/NonOfMyBusiness/scantailor-experimental-main/CMakeLists.txt(172):  SET(CMAKE_AUTOMOC ON )
F:/NonOfMyBusiness/scantailor-experimental-main/CMakeLists.txt(173):  SET(qt_min_version 5.3 )
F:/NonOfMyBusiness/scantailor-experimental-main/CMakeLists.txt(174):  FIND_PACKAGE(Qt5Core ${qt_min_version} REQUIRED )
CMake Warning (dev) at CMakeLists.txt:174 (FIND_PACKAGE):
  Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
  the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

  For compatibility with older versions of CMake, normal variable
  "Qt5Core_DIR" will be removed from the current scope.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at CMakeLists.txt:174 (FIND_PACKAGE):
  By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Qt5Core", but
  CMake did not find one.

  Could not find a package configuration file provided by "Qt5Core"
  (requested version 5.3) with any of the following names:

    Qt5CoreConfig.cmake
    qt5core-config.cmake

  Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
  "Qt5Core_DIR" to a directory containing one of the above files.  If
  "Qt5Core" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!

И надо как то помочь ему найти Qt5. https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/tree/main/packaging/windows никак не поможет?

Спасибо, прочту

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Jul 27, 2023

Hi @plzombie .

Смотри также STU и STA. Там по-другому поиск Qt5 организован. Ежели надо менять cmake-файлы, не вопрос. Я бы и сам, но мне из-за OS-и несподручно шаманить.

PS: Кстати, STA у тебя точно собирается, а STU? Это ежели я сам попытаюсь cmake-файлы перелабать, то что брать как target: STA или STU?

@KOLANICH помоги. Ты спец по cmake. Как переделать, чтоб под виндой поехало? Принимаются любые патчи.

PS: про-grep-ил src. Звиняюсь. Eigen пользуется в src/math. Интересно, это обязательно? Похоже, что да.

@plzombie , собрал build/blas/libeigen_blas_static.a и build/lapack/libeigen_lapack_static.a в MINGW: eigen-3.4.0-build-mingw-win64.zip. Может поможет?

@KOLANICH
Copy link

I'm sorry, I cannot try building it on my machine right now (so IDK what exact issue you have (I assumme it is that it doesn't find Qt?), and which are the causes of it), so I can only give the general advice for now.
My advice is just always using prebuilt binary packages and not to hardcode deps paths in CMakeLists.txt. I guess for Windows platform MSYS2 for the most of packages (maybe even including Qt) can be used (it is kinda a distro and uses pacman package manager from Arch). Also CMakeLists.txt tries to discover some libs itself, while modern versions of CMake have modules for that. Like https://cmake.org/cmake/help/latest/module/FindZLIB.html instead of FIND_PATH(ZLIB_INCLUDE_DIR zlib.h https://cmake.org/cmake/help/latest/module/FindPNG.html https://cmake.org/cmake/help/latest/module/FindTIFF.html . By using the modules the size of CMakeLists.txt can be greately reduced and its clarity can be increased.

Also I propose to just drop the ancient CMake versions.
Also there is SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules"). It completely overrides it. Usually it should append.

While one can do INCLUDE(cmake/FindPthreads.cmake), one can also add "${CMAKE_SOURCE_DIR}/cmake" to CMAKE_MODULE_PATH too and import by just a name. Also I guess you don't need FindPthreads, https://cmake.org/cmake/help/latest/module/FindThreads.html .

Also stuff like https://github.com/raw/ImageProcessing-ElectronicPublications/scantailor-experimental/main/cmake/SetDefaultBuildType.cmake is a piece of shit, such thinks shouldn't ge overridden by cmake scripts.

Also usually one should stay away of using macros and use functions andnset(... PARENT_SCOPE).

In other words CMake scripts here are full of antipatterns.

P.S. I write in English because I think GitHub is an international website and that it is respectful to make own texts there to be understandable by everyone.

@KOLANICH
Copy link

One more thing. If you need Windows XP support, you need an old version of pthreads, in some version they have dropped su-port of XP. Also you need to provide the right flags to clang. -Wl,--major-os-version, -Wl,--minor-os-version, -Wl,--major-subsystem-version, -Wl,--minor-subsystem-version. https://github.com/KOLANICH-libs/WindowsTargetToolchainFiles.cmake can be helpful.

@trufanov-nok
Copy link
Member

trufanov-nok commented Jul 27, 2023

Сам Eigen под винду не собирается.

Eigen - это header only библиотека линейной алгебры. Он не даст dll в выхлопе. Там достаточно чтобы проект видел header files (.h, *.hpp).
CmakeFiles в нем - просто для установки в системные папки header'ов. А FIND_LIBRARY(EIGEN) в проекте - для поиска этих файлов и добавления путей к ним в include_directories()

@zvezdochiot
Copy link
Member Author

@trufanov-nok , да с eigen разберёмся. Почём он Qt5 не находит? Что ему не так?

PS: Я не хочу лезть в cmake-файлы, т.к. не смогу проверить результат.

@trufanov-nok
Copy link
Member

Почём он Qt5 не находит? Что ему не так?

не там значит ищет. Добавление message("$MyVar") в cmakefiles должно облегчить дебаг путей.
Но в принципе, "все фигня, кроме пчёл"
Нужен DevOps, который настроит CI, которое будет собирать автоматически проект под Винду в ее образе (x86 - нефакт, но 64 - точно) при каждом коммите, и сборку выдавать в артефактах. Там вроде даже NSI инсталлятор можно сгенерить.
Я думал что STA проект до этого и дошел, но сейчас глянул - вроде нет.

Старые методы сборки - это из жанра один Петя смог настроить у себя (Например я, но у меня винда на отдельном HDD, который надо втыкать в ноут, поэтому я крайне редко до такого дохожу) и всем собирает. Это тупиковый путь.
И да, я бы упер такой CI в STU ))

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Jul 28, 2023

@trufanov-nok say:

я бы упер такой CI в STU ))

Да я бы и сам упёр. Только в STA сборка онли латест бунта (чисто Qt6 компатибле проверяют). Вот только мне на этот Qt6 с колокольни даже в лине. Я бы с удовольствием вообще все "поделки" на Qt4 собирал бы.

PS: Только что произвёл обработку очередной книги в STEX. Казалось бы самый урезанный вариант ST. Но как же удобно и грамотно он построен по сравнению со STA и STU. Осталось только отрицательные поля под капот завести и станет вне конкуренции по удобству.

STEX 0.2023.08.24 (screenshot "output"):
stex-0 2023 08 24-output

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Sep 13, 2023

Release 0.2023.09.13. Build for Windows by @Нубий-IV. See also #3.

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Sep 25, 2023

Hi @plzombie .

Здесь Нубий-IV описание сборки под винду, которую он применил, сбросил: BUILD.RU.md. Будет время, посмотри. Может какие помарки или примечания внесёшь. Или какие рекомендации добавишь.

PS: Здесь главное подтвердить, что всё именно так, как написано, и сборку можно повторить.

@plzombie
Copy link
Contributor

plzombie commented Oct 1, 2023

@zvezdochiot Я попытался собрать с зависимостями от Scantailor Advanced. Он ругается на jpeg теперь. Видимо, ему нужен libjpeg 6 или как в инструкции libjpeg-turbo. Буду сравнивать с файлами cmake от scantailor advanced. Перекомпилировать всё ещё раз, включая Qt, как по инструкции, как-то не хочется
P.S. Можешь в линуксе сделать ldd по экзешнику?

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Oct 1, 2023

@plzombie say:

Можешь в линуксе сделать ldd по экзешнику?

ldd /usr/bin/scantailor-experimental
  linux-vdso.so.1 (0x00007ffe0d1fe000)
  libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007fbd46d13000)
  libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fbd46cd9000)
  libjpeg.so.62 => /usr/lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007fbd46c55000)
  libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007fbd46bfb000)
  libQt5Xml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007fbd46bb7000)
  libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007fbd4652d000)
  libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fbd45e69000)
  libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fbd4591e000)
  libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbd45751000)
  libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbd4560d000)
  libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbd455f3000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbd4541f000)
  libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007fbd453b3000)
  libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fbd452d8000)
  liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fbd452b0000)
  libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007fbd450a2000)
  libdeflate.so.0 => /usr/lib/x86_64-linux-gnu/libdeflate.so.0 (0x00007fbd45086000)
  libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbd45069000)
  libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbd45045000)
  libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fbd44fbe000)
  libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fbd44ed6000)
  libmd4c.so.0 => /usr/lib/x86_64-linux-gnu/libmd4c.so.0 (0x00007fbd44ec4000)
  libdouble-conversion.so.3 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.3 (0x00007fbd44ead000)
  libicui18n.so.67 => /usr/lib/x86_64-linux-gnu/libicui18n.so.67 (0x00007fbd44ba7000)
  libicuuc.so.67 => /usr/lib/x86_64-linux-gnu/libicuuc.so.67 (0x00007fbd449bc000)
  libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbd449b6000)
  libpcre2-16.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007fbd4492b000)
  libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbd447fc000)
  /lib64/ld-linux-x86-64.so.2 (0x00007fbd4707c000)
  libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fbd44744000)
  libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fbd4470e000)
  libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fbd4464b000)
  libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fbd4461f000)
  libicudata.so.67 => /usr/lib/x86_64-linux-gnu/libicudata.so.67 (0x00007fbd42b06000)
  libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbd42a93000)
  libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fbd4294e000)
  libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fbd42940000)
  libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fbd42915000)
  libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fbd428f2000)
  libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fbd428ed000)
  libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fbd426e5000)
  libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fbd426ce000)
  libmd.so.0 => /usr/lib/x86_64-linux-gnu/libmd.so.0 (0x00007fbd426c1000)

То есть по инструкции хреново? Или просто муторно?

PS: Ты так же можешь сделать objdump по уже готовому EXE в релизах.

@plzombie
Copy link
Contributor

plzombie commented Oct 1, 2023

Инструкция нормальная, но я хочу с зависимостями от Scantailor Advanced собрать

@zvezdochiot
Copy link
Member Author

@plzombie say:

я хочу с зависимостями от Scantailor Advanced собрать

Понял тебя. Ни капли не возражаю. Но только помочь особо мало чем могу. Но ежели чем могу, то разумеется сделаю.

@noobie-iv
Copy link
Member

noobie-iv commented Oct 2, 2023

@plzombie say:

Он ругается на jpeg теперь.

Речь про исходную версию cmake-скриптов? Там проблема в том, что у оригинального libjpeg нет своего cmake-проекта, только набор make-файлов и скрипт configure. Из-за этого в скриптах сборки ST фактически с нуля написан свой cmake-проект под эту библиотеку. Но он, видимо, устарел, там даже набор исходников поменялся. Так что возможны варианты:

  1. Качать старую исходную версию библиотеки, под которую это написано.
  2. Cобрать ее вручную как написано в ее readme, через make.
  3. Скачать к ней файлы cmake, на гитхабе есть такой проект.
  4. Заменить ее на turbo, они совместимы.

А в той версии, которую я сделал, автосборка зависимостей вообще удалена, чтобы не терять время на поддержку скриптов всех зависимостей под все системы/компиляторы/версии. Если зависимости уже собраны (неважно как, в автомате оно получилось, или вручную) - при сборке ST достаточно указать пути ко всем зависимостям, либо заранее через CMAKE_PREFIX_PATH (быстрее), либо вручную по мере возникновения ошибок при конфигурировании (дольше).

@zvezdochiot
Copy link
Member Author

@noobie-iv say:

Так что возможны варианты:

Приветствую, Роман. Заинвайтил вас в ORG.IPEP.

@plzombie
Copy link
Contributor

plzombie commented Oct 3, 2023

@zvezdochiot Удалось скомпилировать с зависимостями от Scantailor Advanced.
Вот скрипт сборки. Надо будет нормальный скрипт написать, на Powershell, как время будет

REM Next is a path to vs env
REM Run it first in CMD then run this script
REM "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

REM For jpeg, copy stage/lib/libjpeg.lib to lib/libjpeg.lib
REM For zlib, copy stage/lib/zdll.lib to lib/zdll.lib
REM For tiff, copy stage/lib/zdll.lib to libtiff/lib/libtiff.lib and bin/libtiff.dll to libtiff/bin/libtiff.dll

rmdir /S /Q build
mkdir build
cd build

cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=f:\NonOfMyBusiness\scantailor\libs\Boost;f:\NonOfMyBusiness\scantailor\libs\eigen-3.4.0;f:\NonOfMyBusiness\scantailor\libs\jpeg-9e;f:\NonOfMyBusiness\scantailor\libs\libpng-1.6.39;f:\NonOfMyBusiness\scantailor\libs\Qt;f:\NonOfMyBusiness\scantailor\libs\tiff-4.2.0\libtiff;f:\NonOfMyBusiness\scantailor\libs\zlib-1.2.11;f:\NonOfMyBusiness\scantailor\libs\OpenCL-SDK-v2023.04.17-Win-x64 ..

nmake

cd ..

pause

Сейчас залью ещё модифицированный CMakeLists.txt

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Oct 3, 2023

@plzombie say:

Вот скрипт сборки.

Так особого то скрипта и нет вовсе. Просто задание переменных cmake. Это можно просто задокументировать и всё. То бишь прописывается структура директорий, прописываются команды с путями (как у вас в bat-файле). И всё.

PS: Кстати, коли bat-файл, то f:\NonOfMyBusiness\scantailor\libs\ надо было вынести в переменную LIBSPATH и использовать:

SET LIBSPATH=f:\NonOfMyBusiness\scantailor\libs\
cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=%LIBSPATH%Boost;%LIBSPATH%eigen-3.4.0;%LIBSPATH%jpeg-9e;%LIBSPATH%libpng-1.6.39;%LIBSPATH%Qt;%LIBSPATH%libtiff;%LIBSPATH%zlib-1.2.11;%LIBSPATH%OpenCL-SDK-v2023.04.17-Win-x64

@plzombie
Copy link
Contributor

plzombie commented Oct 3, 2023

@zvezdochiot Ну да. Я чисто свой скрипт выложил. Если его в репозиторий добавлять, то надо дорабатывать.

Я добавил два коммита. Первый добавляет альтернативные названия dll-ок в CMakeLists.txt. Второй правит ошибки в скрипте установщика (как минимум, теперь у меня ярлыки создаются, все файлы удаляются и не даёт запустить удаление если приложение запущено)

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Oct 3, 2023

@plzombie say:

Я добавил два коммита.

NSIS, говоришь. А где сама инсталяшка в релизе? Я то её никак сделать не смогу. А даже, ежели смогу, то не смогу проверить.

@plzombie
Copy link
Contributor

plzombie commented Oct 3, 2023

@zvezdochiot Прикрепил

@noobie-iv
Copy link
Member

они весят 964 МБ

Debug-сборка весит 1G, Release - 130M. У меня в readme собирается только минимум, который не выбросить, без всяких Creator-ов. И на этом минимуме все собирается, если задача только собрать и протестировать, а не писать/дебажить на ноуте.

Вот со студией - это да, она весит будь здоров. Когда-то вроде видел закачку компиляторов отдельно, но не пользовался.

А по ошибкам то в ветке.

У меня бинарники из https://disk.yandex.ru/d/snhL1yq8PuGvzQ все работают. Собирать не пробовал, не ставил Q6.

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Oct 25, 2023

@noobie-iv , так @plzombie спрашивает, как его правки отрабатывают на Qt5. Qt6 - это собственно его забота.

PS: Сборку запустил. Смотрю.

@plzombie . Всё нормально собралось. Потестил. За исключением отсутствия выключателя морфологии (уже успел привыкнуть, однако) всё как в оригинале. 👍

@plzombie
Copy link
Contributor

То есть мерджу?

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Oct 25, 2023

@plzombie . Делай. 👍

PS: ⚠️ Ветку либо удали, либо сделай по новой (стартани её заново). Сам сделал, отбой.

@plzombie
Copy link
Contributor

@zvezdochiot Я уже устал биться головой об стену. Можешь мне объяснить, почему вот такой вот код

# Generate license file
FILE(READ "LICENSE" ST_LICENSE)
IF(ST_LICENSE_DEPS_DIR)
    SET(ST_LICENSE_SEPARATOR "\n====================\n")
    SET(ST_LICENSE_SEARCH "${ST_LICENSE_DEPS_DIR}/*.txt")
    FILE(GLOB ST_LICENSE_DEPS_FILES LIST_DIRECTORIES FALSE "${ST_LICENSE_SEARCH}")
    MESSAGE(STATUS "ST_LICENSE_DEPS_FILES IS :${ST_LICENSE_DEPS_FILES}")
    FOREACH(ST_LICENSE_DEPS_FILE "${ST_LICENSE_DEPS_FILES}")
	MESSAGE(STATUS "${ST_LICENSE_DEPS_FILE}")
        FILE(READ "${ST_LICENSE_DEPS_FILE}" ST_LICENSE_TEMP)
        SET(
        ST_LICENSE
        "${ST_LICENSE}${ST_LICENSE_SEPARATOR}${ST_LICENSE_DEPS_FILE}${ST_LICENSE_SEPARATOR}${ST_LICENSE_TEMP}"
        )
    ENDFOREACH()
ENDIF()
CONFIGURE_FILE("LICENSE_COMPLETE.in" "LICENSE_COMPLETE" NEWLINE_STYLE CRLF)

Даёт вот такой вот результат

-- ST_LICENSE_DEPS_FILES IS :f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/Qt.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/boost_1_83_0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/eigen-3.4.0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libjpeg-9e.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libpng-1.6.40.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libtiff-4.6.0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/opencl.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/zlib-1.3.txt
-- f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/Qt.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/boost_1_83_0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/eigen-3.4.0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libjpeg-9e.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libpng-1.6.40.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libtiff-4.6.0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/opencl.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/zlib-1.3.txt
CMake Error at CMakeLists.txt:262 (FILE):
  FILE failed to open for reading (Invalid argument):

    f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/Qt.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/boost_1_83_0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/eigen-3.4.0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libjpeg-9e.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libpng-1.6.40.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/libtiff-4.6.0.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/opencl.txt;f:\NonOfYourBusiness\MyBusiness\MyProjects\scantailor-experimental-development\scantailor-experimental\build-x64\..\..\license_deps_dir/zlib-1.3.txt

Как будто foreach игнорирует точки с запятой и работает тупо как set

@plzombie
Copy link
Contributor

Ну нет, ну просто шикарно. В FOREACH(ST_LICENSE_DEPS_FILE "${ST_LICENSE_DEPS_FILES}") нельзя писать кавычки вокруг ${ST_LICENSE_DEPS_FILES}. А что тогда будет, если у меня в пути встретится пробел?

@noobie-iv
Copy link
Member

@plzombie

надо гигабайт 15-20

Вроде вот инструменты командной строки:
https://visualstudio.microsoft.com/ru/visual-cpp-build-tools/

Если ставить по минимуму (основа, компилятор, SDK, cmake) - требует 6.5G. Скачанный инсталлятор весит 2.5G.

С сайта заливается vs_BuildTools.exe - сетевой установщик. Скачать минимальную установку (download.cmd):

vs_BuildTools.exe ^
--layout vsbt2022 ^
--add Microsoft.VisualStudio.Workload.VCTools ^
--add Microsoft.VisualStudio.Component.Windows10SDK

Установить (install.cmd):

vsbt2022\vs_BuildTools.exe ^
--noWeb ^
--nocache ^
--add Microsoft.VisualStudio.Workload.VCTools;includeRecommended ^
--add Microsoft.VisualStudio.Component.Windows10SDK

@plzombie
Copy link
Contributor

@noobie-iv Я до сих пор на версии 2019 сижу, она в архиве. Я уже выкачал. Сейчас будет самое интересное - сборка Qt 6.6. Потому что версию Qt 6.2.2 под arm, которую я успел выкачать до СВО, CMake полноценной не считает, там реально мегабайт на 40 не хватает файлов в папке bin

@plzombie
Copy link
Contributor

Ну и вот что пишут на сайте самого Qt https://doc.qt.io/qt-6/supported-platforms.html

Note: Windows on ARM is only supported as a deployment target. Applications have to be cross-compiled from an x86-64 Windows machine and deployed to target.

Так что не факт, что у меня и 6.6.0 заработает

@plzombie
Copy link
Contributor

qt6 для сборки использует cmake, ninja, perl и батники/шелл-скрипты. Просто жесть какая-то

@plzombie
Copy link
Contributor

@zvezdochiot кстати, как у вас в линуксе с поддержкой high dpi в qt? Под виндой, если не менять масштаб, то, скажем так, нормально. А вот если менять (с монитора на монитор перетаскивать или руками), то всё, вот такой вот ужас
изображение

@plzombie
Copy link
Contributor

@noobie-iv Это какое-то торжество шизофрении. Я должен ещё и сам Qt6 на ноуте с армом собирать. Потому что он, видите ли, бинарники, которые компиляет, ещё и запускает позже

f:\NonOfMyBusiness\qt6-build-2019-arm64>cmake --build . --parallel 8
[112/11262] Running syncqt.cpp for module: QtZlib
FAILED: qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_timestamp F:/NonOfMyBusiness/qt6-build-2019-arm64/qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_timestamp
cmd.exe /C "cd /D F:\NonOfMyBusiness\qt6-build-2019-arm64\qtbase\src\3rdparty\zlib && F:\NonOfMyBusiness\qt6-build-2019-arm64\qtbase\bin\syncqt.exe @F:/NonOfMyBusiness/qt6-build-2019-arm64/qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_args && "G:\Program Files\CMake\bin\cmake.exe" -E touch F:/NonOfMyBusiness/qt6-build-2019-arm64/qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_timestamp"
Эта версия "F:\NonOfMyBusiness\qt6-build-2019-arm64\qtbase\bin\syncqt.exe" не совместима с версией Windows, работающей на этом компьютере. Проверьте сведения о системе, а затем обратитесь к издателю программного обеспечения.
[119/11262] Building C object qtbase\src\3rdparty\libjpeg\CMakeFiles\BundledLibjpeg.dir\src\jchuff.c.obj
ninja: build stopped: subcommand failed.

@plzombie
Copy link
Contributor

Где всего 8 ядер, из них 6 - дохлых

@zvezdochiot
Copy link
Member Author

@plzombie , так не надо всякой дичью заниматься. Я вот STEX пользую, чтобы сканы обрабатывать, а не чтобы с монитора на монитор его жонглировать.

PS: Когда у меня пол монитора вышло из строя (левая половина) и я обрезал рабочую область с помощью xrandr, то особых каких то "спецэффектов" за Qt не наблюдал.

@plzombie
Copy link
Contributor

Ну например, у тебя есть какой-нибудь 4к монитор, и ты хочешь масштаб поставить 150%, чтобы всё не было слишком мелко...

@plzombie
Copy link
Contributor

@noobie-iv Ну вот у меня такая вот ошибка. Просто json-файлик не сгенерировался. Кучу времени убил не пойми на что чтобы получить это:

[ 16%] Built target qmltyperegistrar
[ 16%] Automatic QML type registration for target Qml
Error 5 while parsing D:/NonOfMyBusiness/qt6-build-2019-arm64/qtdeclarative/src/qml/meta_types/qt6qml_release_metatypes.json: illegal value
NMAKE : fatal error U1077: call : возвращенный код "0x1"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\ARM64\nmake.exe" : возвращенный код "0x2"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\ARM64\nmake.exe" : возвращенный код "0x2"
Stop.

@noobie-iv
Copy link
Member

@plzombie

вот такой вот ужас

Возможно, встроенные стили завязаны на "px", а не на "em", и с ростом шрифта не увеличивают отступы. Мне вот в STU не хватает темной темы, потому что встроенная под вынь глючит: то линий не видно, то надписи перекрываются. Я по гитхабу поискал - из нескольких десятков ни одна не подошла. Сижу, свою рисую. Подглядываю в аналогах - везде пиксели прошиты.

Кучу времени убил не пойми на что

Я, конечно, не прогер. Но разве программирование не все такое? Мне всего несколько мелочей надо в STU поправить, я сюда за ними и пришел. Но уже несколько месяцев ни одну из них не могу сделать. Сначала освой долбаный cmake. Потом долбаный git. Потом долбаный ssh. Потом долбаный linux. Эта рекурсия вообще когда-нибудь заканчивается? 😄

@plzombie
Copy link
Contributor

Там в чём проблема. Сначала надо выкачать зависимости. Но не стандартно git submodule init && git submodule update --recursive, а какой-то самописный скрипт на perl, который, по сути, делает то же самое. Потом запускаешь батник, который собирает скрипты cmake через ninja (можно через mingw make, но этот способ не рекомендуется. Возможно, поэтому у меня и выпала ошибка. А ninja я не мог использовать, потому что его автор не сделал сборку под x86/arm). Потом запускается cmake, который генерит файлы уже для nmake. И в процессе сборки nmake-ом создаются ещё какие-то свои программы для сборки самописные, которые выдают ошибки вида Error 5. Это всё уже настолько сложно, что отдельная профессия появилась, DevOps

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Nov 1, 2023

@plzombie say:

Вообще, всё-таки, нужна кнопка 100% или вроде того

Всё-таки я "слегка" был неправ. Это в самом виджете опции "AUTO|MANUAL" переключаются бимодальным образом. А вот сам список опций:

enum AutoManualMode
{
MODE_AUTO,
MODE_MANUAL
};

спокойно расширяется. Щаз добавил:

enum AutoManualMode
{
    MODE_NONE,
    MODE_AUTO,
    MODE_MANUAL
};

, но вот логику выбора всего изображения в самом виджете select_content наладить не могу. Особенно тяжко моё понимание в случае деварпинга. Да и без деварпинга не клеется.

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Nov 4, 2023

@plzombie , посмотрел я тут (в связи с оповещениями), кого ты озвездячивал и вопрос: могу тебя в https://github.com/Sound-Linux-More, https://github.com/IPOL-Fork и https://github.com/Special-graphic-formats заинвокеть. Надо? ❓

@plzombie
Copy link
Contributor

plzombie commented Nov 4, 2023

@zvezdochiot давай

@zvezdochiot
Copy link
Member Author

@plzombie , сделал: ORG.SLM, ORG.IPOL, ORG.SGF.

@zvezdochiot zvezdochiot added the complete Performed label Nov 23, 2023
@plzombie
Copy link
Contributor

plzombie commented Sep 1, 2024

@zvezdochiot @noobie-iv Я тут подниму в очередной раз старую тему. Нашёл случайно вот этот вот репозиторий на sourceforge https://sourceforge.net/projects/fsu0413-qtbuilds/files/
Тут есть сборка qt 5.6 для visual studio 2015. И ещё qt 4.8.
Можно при желании поэкспериментировать. Сделать сборку для Windows XP. Если вдруг кому понадобится.
Но за качество сборок я отвечать не могу (есть ли там вирусы и т.д.)

@noobie-iv
Copy link
Member

Ткнул пару наугад. На 6.7.2 собирается. На 4.8.7 - нет, надо править cmake для подддержки Qt4.

@trufanov-nok
Copy link
Member

Ткнул пару наугад. На 6.7.2 собирается. На 4.8.7 - нет, надо править cmake для подддержки Qt4.

А зачем вам Qt4... Qt 5.7.1 последний поддерживающий WinXP вроде. Древнее 5.6 ничего не нужно, если только вы под смартфоны Nokia собирать не планируете. STU собирался мной на Win7 с поддержкой WinXP. Нюанс был в том что в VS (и есть ограничение по макс версии IDE VS поддерживающей XP, вроде 2013 ) для всех компонентов проекта и зависимостей нужно было выбрать платформу v120_xp, а не v120 (дефолт) в настройках или что-то типа того. А оно постоянно слетало и я не разобрался почему. И даже скрипт вроде писал, чтобы патчить файлы проекта проставляя правильную платформу с поддержкой XP. Что-то такое вспоминаю. В общем, если все правильно сделать Qt5 WinXP поддержит

@plzombie
Copy link
Contributor

plzombie commented Sep 4, 2024

@trufanov-nok Вроде Qt 5.6 официально поддерживаемая линейка. 5.7 уже ничего не гарантирует
Насчёт платформы, я тут без понятия, как в самом cmake платформу выбрать (не в Visual Studio). Говорят, флаг -T v140_xp добавить

@zvezdochiot
Copy link
Member Author

zvezdochiot commented Sep 4, 2024

Александр (aka @trufanov-nok ), а чего последний PR в STU не принимаете? Очень знатный порог Grad (aka "Gradient snip") получился, в последнее время в STEX использую в 99% случаев именно его (radius=5, coef=0.75), а в оставшемся 1% - Mean или Otsu (aka BiModal).

@trufanov-nok
Copy link
Member

Сразу посмотреть времени не было, а потом забыл.
Принял, спасибо!

@zvezdochiot
Copy link
Member Author

Александр (aka @trufanov-nok ), настройки из папки "Scan Tailor Universal" в папку "Scan Tailor" не забудьте перенести. А то будете потом: "А кто это сделал?! А куда всё подевалось?!" 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
complete Performed help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants