Closed zvezdochiot closed 10 months ago
@zvezdochiot Я правильно понимаю, что -experimental использует OpenCL?
Класс. Я вот добрался до Eigen, скачал бинарник, иии - меня встречает файл cmake. А ещё оказалось, что это "кроссплатформенное программное обеспечение" не поддерживает visualstudio 2019 и требует компилятор фортрана. Можешь сюда уже собранные инклуды скинуть?
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
. Всё
:question: То есть, что именно, помимо build
, надо скинуть?
У меня сейчас пишет:
-- 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>
Ума не приложу, что ему надо
Hi @plzombie .
А cmake --trace ..
что даёт?
И также cmake -D ENABLE_OPENGL=OFF ..
?
И надо как то помочь ему найти Qt5. https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/tree/main/packaging/windows никак не поможет?
А 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 никак не поможет?
Спасибо, прочту
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. Может поможет?
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://raw.githubusercontent.com/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 macro
s and use function
s 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.
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.
Сам Eigen под винду не собирается.
Eigen - это header only библиотека линейной алгебры. Он не даст dll в выхлопе. Там достаточно чтобы проект видел header files (.h, *.hpp). CmakeFiles в нем - просто для установки в системные папки header'ов. А FIND_LIBRARY(EIGEN) в проекте - для поиска этих файлов и добавления путей к ним в include_directories()
@trufanov-nok , да с eigen
разберёмся. Почём он Qt5 не находит? Что ему не так?
PS: Я не хочу лезть в cmake
-файлы, т.к. не смогу проверить результат.
Почём он Qt5 не находит? Что ему не так?
не там значит ищет. Добавление message("$MyVar") в cmakefiles должно облегчить дебаг путей.
Но в принципе, "все фигня, кроме пчёл"
Нужен DevOps, который настроит CI, которое будет собирать автоматически проект под Винду в ее образе (x86 - нефакт, но 64 - точно) при каждом коммите, и сборку выдавать в артефактах. Там вроде даже NSI инсталлятор можно сгенерить.
Я думал что STA проект до этого и дошел, но сейчас глянул - вроде нет.
Старые методы сборки - это из жанра один Петя смог настроить у себя (Например я, но у меня винда на отдельном HDD, который надо втыкать в ноут, поэтому я крайне редко до такого дохожу) и всем собирает. Это тупиковый путь.
И да, я бы упер такой CI в STU ))
@trufanov-nok say:
я бы упер такой CI в STU ))
Да я бы и сам упёр. Только в STA сборка онли латест бунта (чисто Qt6 компатибле проверяют). Вот только мне на этот Qt6 с колокольни даже в лине. Я бы с удовольствием вообще все "поделки" на Qt4 собирал бы.
PS: Только что произвёл обработку очередной книги в STEX. Казалось бы самый урезанный вариант ST. Но как же удобно и грамотно он построен по сравнению со STA и STU. Осталось только отрицательные поля под капот завести и станет вне конкуренции по удобству.
STEX 0.2023.08.24 (screenshot "output"):
Release 0.2023.09.13. Build for Windows by @Нубий-IV. See also #3.
Hi @plzombie .
Здесь Нубий-IV описание сборки под винду, которую он применил, сбросил: BUILD.RU.md. Будет время, посмотри. Может какие помарки или примечания внесёшь. Или какие рекомендации добавишь.
PS: Здесь главное подтвердить, что всё именно так, как написано, и сборку можно повторить.
@zvezdochiot Я попытался собрать с зависимостями от Scantailor Advanced. Он ругается на jpeg теперь. Видимо, ему нужен libjpeg 6 или как в инструкции libjpeg-turbo. Буду сравнивать с файлами cmake от scantailor advanced. Перекомпилировать всё ещё раз, включая Qt, как по инструкции, как-то не хочется
P.S. Можешь в линуксе сделать ldd
по экзешнику?
@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 в релизах.
Инструкция нормальная, но я хочу с зависимостями от Scantailor Advanced собрать
@plzombie say:
я хочу с зависимостями от Scantailor Advanced собрать
Понял тебя. Ни капли не возражаю. Но только помочь особо мало чем могу. Но ежели чем могу, то разумеется сделаю.
@plzombie say:
Он ругается на jpeg теперь.
Речь про исходную версию cmake-скриптов? Там проблема в том, что у оригинального libjpeg нет своего cmake-проекта, только набор make-файлов и скрипт configure. Из-за этого в скриптах сборки ST фактически с нуля написан свой cmake-проект под эту библиотеку. Но он, видимо, устарел, там даже набор исходников поменялся. Так что возможны варианты:
А в той версии, которую я сделал, автосборка зависимостей вообще удалена, чтобы не терять время на поддержку скриптов всех зависимостей под все системы/компиляторы/версии. Если зависимости уже собраны (неважно как, в автомате оно получилось, или вручную) - при сборке ST достаточно указать пути ко всем зависимостям, либо заранее через CMAKE_PREFIX_PATH (быстрее), либо вручную по мере возникновения ошибок при конфигурировании (дольше).
@noobie-iv say:
Так что возможны варианты:
Приветствую, Роман. Заинвайтил вас в ORG.IPEP.
@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
@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
@zvezdochiot Ну да. Я чисто свой скрипт выложил. Если его в репозиторий добавлять, то надо дорабатывать.
Я добавил два коммита. Первый добавляет альтернативные названия dll-ок в CMakeLists.txt. Второй правит ошибки в скрипте установщика (как минимум, теперь у меня ярлыки создаются, все файлы удаляются и не даёт запустить удаление если приложение запущено)
@plzombie say:
Я добавил два коммита.
NSIS, говоришь. А где сама инсталяшка в релизе? Я то её никак сделать не смогу. А даже, ежели смогу, то не смогу проверить.
@zvezdochiot Прикрепил
@plzombie say:
Прикрепил.
Да. Всё увидел. Спсб. Ну и каков твой "диагноз"? Юзабельная система сборки или нужен "специально обученный человек"?
Нормальная. Но я хочу скрипт дописать, который бы все зависимости скачивал и с ними запускал уже cmake
@plzombie say:
Но я хочу скрипт дописать...
Нет препятствий патриотам! :+1:
PS: :warning: Заметил: у инсталяшки дважды прописывается experimental
. Я вижу это как наследие от предыдущих сборок, где имя инсталятора складывалось из scantailor
+experimental
. В нашем случае по аналогии происходит следующее: scantailor-experimental
+experimental
. Надо бы:
https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/blob/be2d6703e7b6bdb7dd0c815a3066a871adfbd025/packaging/windows/CMakeLists.txt#L21
заменить на:
SET(INSTALLER_FILENAME "scantailor-experimental-${VERSION_QUAD}-${bits}bit-install.exe")
:information_source: Хотя не. Надо наконец упразднить всю это "историческую" канитель и перенести experimental
из VERSION
в название, в саму VERSION
перенести VERSION_QUAD
, а VERSION_QUAD
упразднить. Такие вот дела.
https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/blob/be2d6703e7b6bdb7dd0c815a3066a871adfbd025/src/version.h#L22-L23
@zvezdochiot say:
Надо наконец упразднить всю это "историческую" канитель
Привет @plzombie .
Получено одно срабатывание Trojan:Win32/Wacatac.H!ml на инсталяшке в дефендере на 10 вин. В ClamAV (linux) ничего.
Там написано !ml в конце, это какая-то шизанутая эвристика в антивирусах. Дрвеб и Касперский молчат. Приду домой - зарепорчу в Майкрософт ложное срабатывание
Я два раза просканировал virustotal. Первый раз мне defender написал Trojan:Win32/Sabsik.TE.A!ml, второй раз - Trojan:Win32/Watanac.B!ml. А на форуме вообще третий написали.
@plzombie say:
Дрвеб и Касперский молчат.
Ну понятно. Мне вообще воспроизвести хоть что то не удалось. Я уже закинул идею протестить "древнюю" инсталяшку ещё от @Tulon . Чисто сличить реакцию. Потому как сведений с гулькин х.
@zvezdochiot Я не знаю. Возможно, кто-то уже зарепортил установщик в майкрософт. Но теперь не ругается https://www.virustotal.com/gui/file/03f6e1528aafef52d1286c875cf4e0d52fdb9db92ca1ea655aadb3f3c1eda797?nocache=1
@plzombie , понял тебя. Опубликую на руборде. :+1:
@zvezdochiot касательно подписи. Эти сертификаты подписи кода стоят от $100 в год до бесконечности. Никакого аналога бесплатного Let's Encrypt для программ нет. И в России не факт что можно купить теперь. Так что я, пожалуй, обойдусь без них
@plzombie , а на кой оно нам? У нас же всё на добровольной основе, не хочешь - не пользуй. Так что солидарен полностью.
@plzombie , ежели с двухфакторным говном возникла байда, то мне тут аддон посоветовали. Вроде пока работает. Как дальше? Посмотрим.
В винде там уже в гит встроена поддержка двухфакторки. В конце концов, можно ключ для репозитория сделать или входить по ssh (не знаю, убрали его ещё, или нет)
@plzombie say:
по ssh (не знаю, убрали его ещё, или нет)
И будут откровенными тварями, ежели тронут SSH. Я собственно по нему и "гуляю". Альтернативный GPG - такой геморрой, что я даже прикасаться не стал. А уж этот OAuth - это какое то отровенное разводилово, высасывание пальца из воздуха.
Привет @plzombie .
Сборка на этот раз нормально (в пределах разумного) прошла? Ничего править, включая имя файла, не пришлось?
@zvezdochiot Всё отлично. И предыдущая установка обновилась, не пришлось руками удалять
@plzombie , да это я подправил. Забудь.
PS: оповестил народ.
Можешь меня поздравить. Я собрал 32-битный установщик. Там правда не все фичи libtiff прикручены
-- ZLIB support: Requested:ON Availability:TRUE Support:TRUE
-- libdeflate support: Requested:OFF Availability:FALSE Support:FALSE
-- Pixar log-format algorithm: Requested:ON Availability:TRUE Support:TRUE
-- JPEG support: Requested:ON Availability:TRUE Support:TRUE
-- Old JPEG support: Requested:ON Availability:TRUE Support:TRUE
-- JPEG 8/12 bit dual mode: Requested:OFF Availability:FALSE Support:FALSE
-- ISO JBIG support: Requested:OFF Availability:FALSE Support:FALSE
-- LERC support: Requested:OFF Availability:FALSE Support:FALSE
-- LZMA2 support: Requested:OFF Availability:FALSE Support:FALSE
-- ZSTD support: Requested:OFF Availability:FALSE Support:FALSE
-- WEBP support: Requested:OFF Availability:FALSE Support:FALSE
Доделаю сборку libtiff, потом буду делать Windows on Arm (она нужен лично мне, у меня такой ноут)
@plzombie say:
Можешь меня поздравить. Я собрал 32-битный установщик.
Поздравляю, конечно. Только где он, 32-битный установщик.? В релизе не увидел. И добъёшся сборки под ARM, то тоже в релиз закидывай. И по возможности прописывай рецепт сборки в BUILD.md.
@plzombie say:
не все фичи libtiff прикручены
У меня и в x64 ровно так же. Чтобы было не так - надо качать, собирать, и добавлять в зависимости еще несколько библиотек - от libdeflate до libwebp. И надо еще понимать, используются ли эти фишки в самой программе, а то только лишних dll в установку накидаем.
@noobie-iv say:
используются ли эти фишки в самой программе
Здесь не в программе, а в конкретно используемом Qt смотреть надо поддержку форматов и библиотек.
@noobie-iv вот я как раз не успел собрать, уже под ночь лень было, компилируется и ладно @zvezdochiot я залью, но помечу, что это тестовая версия Потому что libtiff надо пересобрать со всеми зависимостями. Тут кто-то жаловался, что у него в сборке tiff с old-jpeg не работает. Мало ли что пользователь загрузит Кстати. Зачем там ещё и libdeflate, если уже есть zlib? И для ARM - там главное поддержка Qt6. Потому что Qt5 никто в здравом уме и не думал собирать под WinArm. Остальное уже дело техники
@noobie-iv say:
используются ли эти фишки в самой программе
Здесь не в программе, а в конкретно используемом Qt смотреть надо поддержку форматов и библиотек.
Я посмотрел, тут есть классы TiffReader и TiffWriter, которые напрямую libtiff используют, никакого Qt. Надо посмотреть, откуда они вызываются
Hi @plzombie , @trufanov-nok .
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
)