Compare commits
4 Commits
develop
...
a441eb4ff2
| Author | SHA1 | Date | |
|---|---|---|---|
| a441eb4ff2 | |||
| 036a0e6d9a | |||
| c6121a6ccd | |||
| a1f7e125f1 |
101
Dockerfile.windows-build
Normal file
101
Dockerfile.windows-build
Normal 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/
|
||||
60
README.md
60
README.md
@@ -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,24 +74,7 @@
|
||||
- opencv 4.12.0
|
||||
- go 1.25.4
|
||||
|
||||
### Go
|
||||
|
||||
Используйте следующую команду в терминале:
|
||||
```bash
|
||||
go install git.weirdcat.su/weirdcat/auto-attendance/cmd/qrminator-cli@main
|
||||
```
|
||||
|
||||
Далее можно запускать командой:
|
||||
```bash
|
||||
qrminator-cli
|
||||
```
|
||||
|
||||
Убедитесь, что вы добавили `~/.go/bin` в PATH. Например:
|
||||
```bash
|
||||
export PATH=$PATH:~/.go/bin
|
||||
```
|
||||
|
||||
### Make
|
||||
#### Порядок сборки
|
||||
|
||||
Склонируйте мой репозиторий:
|
||||
```bash
|
||||
@@ -99,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`.
|
||||
|
||||
# Поддержать разработчиков
|
||||

|
||||
|
||||
Reference in New Issue
Block a user