3 Commits

Author SHA1 Message Date
036a0e6d9a refactor: docs 2025-12-16 19:23:40 +03:00
a1f7e125f1 feat: windows build Dockerfile 2025-12-16 17:44:18 +03:00
5456ca5120 feat: docs 2025-11-27 20:47:57 +03:00
4 changed files with 139 additions and 7 deletions

101
Dockerfile.windows-build Normal file
View File

@@ -0,0 +1,101 @@
FROM ubuntu:24.04
# Install required tools for MinGW cross-compilation, CMake, and dependencies
RUN apt-get update && apt-get install -y \
git \
make \
curl \
wget \
unzip \
cmake \
build-essential \
mingw-w64 \
g++-mingw-w64-x86-64-posix \
gcc-mingw-w64-x86-64-posix \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Download and install Go 1.25.4
RUN wget https://go.dev/dl/go1.25.4.linux-amd64.tar.gz && \
tar -C /usr/local -xzf go1.25.4.linux-amd64.tar.gz && \
rm go1.25.4.linux-amd64.tar.gz
ENV PATH=$PATH:/usr/local/go/bin
# Download OpenCV 4.12.0 source
RUN wget https://github.com/opencv/opencv/archive/4.12.0.zip && \
unzip 4.12.0.zip && \
mv opencv-4.12.0 opencv && \
rm 4.12.0.zip
# Create MinGW toolchain file for CMake
RUN echo 'set(CMAKE_SYSTEM_NAME Windows)' > /opencv/toolchain.cmake && \
echo 'set(CMAKE_SYSTEM_PROCESSOR AMD64)' >> /opencv/toolchain.cmake && \
echo 'set(TOOLCHAIN x86_64-w64-mingw32)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_C_COMPILER /usr/bin/${TOOLCHAIN}-gcc-posix)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_CXX_COMPILER /usr/bin/${TOOLCHAIN}-g++-posix)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_RC_COMPILER /usr/bin/${TOOLCHAIN}-windres)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN})' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)' >> /opencv/toolchain.cmake && \
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)' >> /opencv/toolchain.cmake
# Build and install OpenCV for Windows (static libs, minimal build to avoid dependency issues)
RUN cd /opencv && mkdir build && cd build && \
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_IPP=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_opencv_apps=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_OPENGL=OFF \
-DWITH_QT=OFF \
-DWITH_VTK=OFF \
-DWITH_GTK=OFF \
-DCPU_BASELINE=SSE3 \
-DWITH_TBB=OFF \
-DWITH_PROTOBUF=ON \
-DBUILD_PROTOBUF=ON \
-DPROTOBUF_UPDATE_FILES=OFF \
-DWITH_PNG=ON \
-DWITH_JPEG=ON \
-DWITH_TIFF=ON \
-DWITH_WEBP=ON \
-DWITH_OPENJPEG=ON \
-DWITH_OPENEXR=OFF \
-DBUILD_PNG=ON \
-DBUILD_JPEG=ON \
-DBUILD_TIFF=ON \
-DBUILD_WEBP=ON \
-DBUILD_OPENJPEG=ON \
-DBUILD_ZLIB=ON \
.. && \
make -j$(nproc) && \
make install
# List the actual libraries to help debug
RUN echo "Installed OpenCV libraries:" && ls -la /usr/x86_64-w64-mingw32/lib/*.a | head -30
# Set CGO environment variables with corrected library names and paths
ENV CGO_CPPFLAGS="-I/usr/x86_64-w64-mingw32/include/opencv4"
ENV CGO_CXXFLAGS="--std=c++11"
# Include both main lib directory and opencv4/3rdparty subdirectory, use correct library names and Windows system libs
ENV CGO_LDFLAGS="-L/usr/x86_64-w64-mingw32/lib -L/usr/x86_64-w64-mingw32/lib/opencv4/3rdparty -lopencv_core4120 -lopencv_imgproc4120 -lopencv_objdetect4120 -lopencv_flann4120 -lopencv_features2d4120 -lopencv_calib3d4120 -lopencv_highgui4120 -lopencv_videoio4120 -lopencv_imgcodecs4120 -lopencv_video4120 -lopencv_photo4120 -lopencv_ml4120 -lopencv_dnn4120 -lopencv_gapi4120 -lopencv_stitching4120 -llibprotobuf -llibpng -llibopenjp2 -llibwebp -llibtiff -llibjpeg-turbo -lzlib -lade -lgdi32 -lole32 -loleaut32 -luuid -lcomdlg32 -lstdc++fs -lws2_32 -static-libgcc -static-libstdc++ -static"
ENV PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig
ENV LD_LIBRARY_PATH=/usr/x86_64-w64-mingw32/lib
# Clone the repository
RUN git clone https://git.weirdcat.su/weirdcat/auto-attendance.git /go/src/auto-attendance
# Set working directory
WORKDIR /go/src/auto-attendance
# Download Go modules
RUN go mod download
# Build the Windows executable with CGO enabled, customenv tag, and MinGW compilers
RUN GOOS=windows GOARCH=amd64 CGO_ENABLED=1 \
CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix \
go build -tags customenv -v -o bin/autoattendance.exe ./cmd/

View File

@@ -1,7 +1,7 @@
APP_NAME := autoattendance
SRC_DIR := ./
BUILD_DIR := bin
CMD_PATH := ./cmd/qrminator-cli/
CMD_PATH := ./cmd/
GOCMD := go
GOBUILD := $(GOCMD) build -v

View File

@@ -41,7 +41,7 @@
Вам потребуется поддерживаемая операционная система из списка ниже. Если галочки нет, то поддержка появится в будущем.
- [x] Linux (Wayland)
- [x] Linux (XORG)
- [ ] Windows 10/11 (не тестировалось, должно билдиться)
- [x] Windows 10/11
- [ ] MacOS (не тестировалось, должно билдиться)
### ⬇️ Установка
@@ -50,12 +50,23 @@
### ⚙️ Настройка
При первом запуске будет необходимо выполнить настройку приложения. В Linux файл конфигурации располагается здесь:
`~/.config/auto-attendance/auto-attendance.toml`. Необходимо получить актуальный файл конфигурации, который будет работать с конкретным журналом посещений
При первом запуске будет необходимо выполнить настройку приложения. Расположение файла конфигурации зависит от системы:
- В Linux:
- `~/.config/auto-attendance/auto-attendance.toml`
- В Windows:
- `C:\Users\user\AppData\Roaming\auto-attendance\auto-attendance.toml`
Необходимо получить актуальный файл конфигурации, который будет работать с конкретным журналом посещений. Ключевую роль играют следующие параметры:
```toml
qr_query_token = '' # Название query-параметра, содержащего уникальный токен ссылки
self_approve_url = '' # Полный URL ссылки QR-кода (без query-параметров)
```
## 🔨 Сборка
### 🧩 Зависимости
### Make (Linux, MacOS)
#### 🧩 Зависимости
- git
- make
@@ -63,7 +74,7 @@
- opencv 4.12.0
- go 1.25.4
### Linux & MacOS & Windows
#### Порядок сборки
Склонируйте мой репозиторий:
```bash
@@ -82,10 +93,30 @@ make
# make build-linux
# make build-macos
# make build-windows
```
Далее для запуска можете использовать команду `make run`.
### Dockerfile (Windows)
На данный момент единственный проверенный и самый простой способ собрать приложение под Windows - использовать [специальный Dockerfile](https://git.weirdcat.su/weirdcat/auto-attendance/raw/branch/main/Dockerfile.windows-build). На Windows для этого можно использовать WSL с Docker.
#### Порядок сборки (Bash):
```bash
# Создаем директорию и переходим в нее
mkdir build && cd build
# Получаем содержимое Dockerfile
curl "https://git.weirdcat.su/weirdcat/auto-attendance/raw/branch/main/Dockerfile.windows-build" > Dockerfile
# Выполняем сборку
docker build -t autoattendance-build-windows .
# Копируем бинарник из образа в текущую папку
docker run --rm -v $(pwd):/output autoattendance-build-windows sh -c "cp /go/src/auto-attendance/bin/autoattendance.exe /output/"
```
Готовое приложение - файл `autoattendance.exe`.
# Поддержать разработчиков
![Николай (Telegram)](https://t.me/thebreadcat)