Skip to content

Commit b3da9cb

Browse files
authored
Merge pull request #1836 from shimat/renew_windows_environment_setup
Use git submodules for OpenCV, vcpkg for Tesseract, and cmake initial cache files for build flags
2 parents cc75bb9 + 22a04fe commit b3da9cb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+592
-1291
lines changed

.github/workflows/linux-arm.yml

Lines changed: 20 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Linux ARM
1+
name: Linux ARM
22

33
on:
44
pull_request:
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- uses: actions/checkout@v6
2121
with:
22-
path: opencvsharp
22+
submodules: true
2323

2424
- name: Install dependencies
2525
run: |
@@ -52,69 +52,21 @@ jobs:
5252
id: opencv-cache
5353
uses: actions/cache/restore@v5
5454
with:
55-
path: ${{ github.workspace }}/opencv_artifacts/
55+
path: |
56+
${{ github.workspace }}/opencv_artifacts/include
57+
${{ github.workspace }}/opencv_artifacts/lib
5658
key: opencv-arm-${{ env.OPENCV_VERSION }}-${{ hashFiles('.github/workflows/linux-arm.yml') }}
5759
restore-keys: |
5860
opencv-arm-${{ env.OPENCV_VERSION }}-
5961
60-
- name: Checkout OpenCV
61-
if: steps.opencv-cache.outputs.cache-hit != 'true'
62-
uses: actions/checkout@v6
63-
with:
64-
repository: opencv/opencv
65-
path: opencv
66-
ref: ${{ env.OPENCV_VERSION }}
67-
- name: Checkout OpenCV Contrib
68-
if: steps.opencv-cache.outputs.cache-hit != 'true'
69-
uses: actions/checkout@v6
70-
with:
71-
repository: opencv/opencv_contrib
72-
path: opencv_contrib
73-
ref: ${{ env.OPENCV_VERSION }}
74-
7562
- name: Build OpenCV
7663
if: steps.opencv-cache.outputs.cache-hit != 'true'
7764
run: |
7865
cmake \
66+
-C cmake/opencv_build_options.cmake \
7967
-S opencv \
8068
-B opencv/build \
81-
-D CMAKE_BUILD_TYPE=Release \
8269
-D OPENCV_EXTRA_MODULES_PATH=${GITHUB_WORKSPACE}/opencv_contrib/modules \
83-
-D BUILD_SHARED_LIBS=OFF \
84-
-D ENABLE_CXX11=ON \
85-
-D BUILD_EXAMPLES=OFF \
86-
-D BUILD_DOCS=OFF \
87-
-D BUILD_PERF_TESTS=OFF \
88-
-D BUILD_TESTS=OFF \
89-
-D BUILD_JAVA=OFF \
90-
-D BUILD_opencv_apps=OFF \
91-
-D BUILD_opencv_barcode=OFF \
92-
-D BUILD_opencv_java_bindings_generator=OFF \
93-
-D BUILD_opencv_python_bindings_generator=OFF \
94-
-D BUILD_opencv_python_tests=OFF \
95-
-D BUILD_opencv_ts=OFF \
96-
-D BUILD_opencv_js=OFF \
97-
-D BUILD_opencv_js_bindings_generator=OFF \
98-
-D BUILD_opencv_bioinspired=OFF \
99-
-D BUILD_opencv_ccalib=OFF \
100-
-D BUILD_opencv_datasets=OFF \
101-
-D BUILD_opencv_dnn_objdetect=OFF \
102-
-D BUILD_opencv_dpm=OFF \
103-
-D BUILD_opencv_fuzzy=OFF \
104-
-D BUILD_opencv_gapi=ON \
105-
-D BUILD_opencv_intensity_transform=OFF \
106-
-D BUILD_opencv_mcc=OFF \
107-
-D BUILD_opencv_objc_bindings_generator=OFF \
108-
-D BUILD_opencv_rapid=OFF \
109-
-D BUILD_opencv_reg=OFF \
110-
-D BUILD_opencv_stereo=OFF \
111-
-D BUILD_opencv_structured_light=OFF \
112-
-D BUILD_opencv_surface_matching=OFF \
113-
-D BUILD_opencv_wechat_qrcode=ON \
114-
-D BUILD_opencv_videostab=OFF \
115-
-D WITH_GSTREAMER=OFF \
116-
-D WITH_ADE=OFF \
117-
-D OPENCV_ENABLE_NONFREE=ON \
11870
-D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_artifacts
11971
cmake --build opencv/build -j 3
12072
cmake --install opencv/build
@@ -125,23 +77,25 @@ jobs:
12577
if: steps.opencv-cache.outputs.cache-hit != 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main'
12678
uses: actions/cache/save@v5
12779
with:
128-
path: ${{ github.workspace }}/opencv_artifacts/
80+
path: |
81+
${{ github.workspace }}/opencv_artifacts/include
82+
${{ github.workspace }}/opencv_artifacts/lib
12983
key: opencv-arm-${{ env.OPENCV_VERSION }}
13084

13185
- name: Build OpenCvSharpExtern
13286
run: |
13387
cmake \
134-
-S opencvsharp/src \
135-
-B opencvsharp/src/build \
88+
-S src \
89+
-B src/build \
13690
-D CMAKE_BUILD_TYPE=Release \
13791
-D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/opencv_artifacts
138-
cmake --build opencvsharp/src/build -j
139-
ls opencvsharp/src/build/OpenCvSharpExtern
140-
cp opencvsharp/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/nuget/
92+
cmake --build src/build -j
93+
ls src/build/OpenCvSharpExtern
94+
cp src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/nuget/
14195
14296
- name: Check OpenCvSharpExtern
14397
run: |
144-
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
98+
cd ${GITHUB_WORKSPACE}/nuget/
14599
ldd libOpenCvSharpExtern.so
146100
nm libOpenCvSharpExtern.so
147101
echo -ne "#include <stdio.h> \n int core_Mat_sizeof(); int main(){ int i = core_Mat_sizeof(); printf(\"sizeof(Mat) = %d\", i); return 0; }" > test.c
@@ -162,7 +116,7 @@ jobs:
162116
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
163117
echo "Package version: $version"
164118
165-
cd ${GITHUB_WORKSPACE}/opencvsharp
119+
cd ${GITHUB_WORKSPACE}
166120
dotnet pack nuget/OpenCvSharp4.runtime.linux-arm.csproj -o ${GITHUB_WORKSPACE}/artifacts_arm -p:Version=$version
167121
168122
ls ${GITHUB_WORKSPACE}/artifacts_arm
@@ -174,9 +128,9 @@ jobs:
174128

175129
- name: Test
176130
run: |
177-
cd ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests
131+
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests
178132
dotnet build -c Release -f net8.0
179-
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/bin/Release/net8.0/
180-
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/
181-
sudo cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so /usr/lib/
133+
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/bin/Release/net8.0/
134+
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/
135+
sudo cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so /usr/lib/
182136
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net8.0 --runtime linux-arm64 --logger "trx;LogFileName=test-results.trx" < /dev/null

.github/workflows/ubuntu-slim.yml

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Ubuntu Slim
1+
name: Ubuntu Slim
22

33
on:
44
pull_request:
@@ -25,7 +25,7 @@ jobs:
2525
steps:
2626
- uses: actions/checkout@v6
2727
with:
28-
path: opencvsharp
28+
submodules: true
2929

3030
- name: Install dependencies
3131
run: |
@@ -54,39 +54,15 @@ jobs:
5454
${{ github.workspace }}/opencv_artifacts_slim/lib
5555
key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}-slim
5656

57-
- name: Checkout OpenCV
58-
if: steps.opencv-cache.outputs.cache-hit != 'true'
59-
uses: actions/checkout@v6
60-
with:
61-
repository: opencv/opencv
62-
path: opencv
63-
ref: ${{ env.OPENCV_VERSION }}
64-
6557
- name: Build OpenCV (slim)
6658
if: steps.opencv-cache.outputs.cache-hit != 'true'
6759
run: |
6860
# Keep a practical subset (e.g., features2d/objdetect) while avoiding heavy runtime deps
6961
# from UI/video stacks and contrib modules.
7062
cmake \
63+
-C cmake/opencv_build_options_slim.cmake \
7164
-S opencv \
7265
-B opencv/build \
73-
-D CMAKE_BUILD_TYPE=Release \
74-
-D BUILD_SHARED_LIBS=OFF \
75-
-D ENABLE_CXX11=ON \
76-
-D BUILD_LIST=core,imgproc,imgcodecs,calib3d,features2d,flann,objdetect,photo \
77-
-D BUILD_PROTOBUF=OFF \
78-
-D BUILD_opencv_dnn=OFF \
79-
-D BUILD_EXAMPLES=OFF \
80-
-D BUILD_DOCS=OFF \
81-
-D BUILD_PERF_TESTS=OFF \
82-
-D BUILD_TESTS=OFF \
83-
-D BUILD_JAVA=OFF \
84-
-D BUILD_opencv_apps=OFF \
85-
-D WITH_GSTREAMER=OFF \
86-
-D WITH_FFMPEG=OFF \
87-
-D WITH_GTK=OFF \
88-
-D WITH_PROTOBUF=OFF \
89-
-D WITH_ADE=OFF \
9066
-D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_artifacts_slim
9167
cmake --build opencv/build -j 3
9268
cmake --install opencv/build
@@ -141,8 +117,8 @@ jobs:
141117
run: |
142118
# Match OpenCV subset above: keep common CV modules, disable wrappers for disabled modules.
143119
cmake \
144-
-S opencvsharp/src \
145-
-B opencvsharp/src/build-slim \
120+
-S src \
121+
-B src/build-slim \
146122
-D CMAKE_BUILD_TYPE=Release \
147123
-D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/opencv_artifacts_slim \
148124
-D NO_CONTRIB=ON \
@@ -153,18 +129,18 @@ jobs:
153129
-D NO_DNN=ON \
154130
-D NO_ML=ON \
155131
-D NO_BARCODE=ON
156-
cmake --build opencvsharp/src/build-slim -j
157-
cp opencvsharp/src/build-slim/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/nuget/
132+
cmake --build src/build-slim -j
133+
cp src/build-slim/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/nuget/
158134
159135
- name: Check OpenCvSharpExtern dependencies (slim)
160136
run: |
161-
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
137+
cd ${GITHUB_WORKSPACE}/nuget/
162138
ldd -r libOpenCvSharpExtern.so
163139
! ldd libOpenCvSharpExtern.so | grep -q "not found"
164140
165141
- name: Smoke test OpenCvSharpExtern (slim)
166142
run: |
167-
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
143+
cd ${GITHUB_WORKSPACE}/nuget/
168144
echo -ne "#include <stdio.h> \n int core_Mat_sizeof(); int main(){ int i = core_Mat_sizeof(); printf(\"sizeof(Mat) = %d\", i); return 0; }" > test.c
169145
gcc -I./ -L./ test.c -o test -lOpenCvSharpExtern
170146
LD_LIBRARY_PATH=. ./test
@@ -182,7 +158,7 @@ jobs:
182158
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
183159
echo "Package version: $version"
184160
185-
cd ${GITHUB_WORKSPACE}/opencvsharp
161+
cd ${GITHUB_WORKSPACE}
186162
package_project="OpenCvSharp4.official.runtime.ubuntu.${{ matrix.ubuntu }}-x64.slim.csproj"
187163
dotnet pack "nuget/${package_project}" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version
188164
@@ -195,7 +171,7 @@ jobs:
195171
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
196172
echo "Package version: $version"
197173
198-
cd ${GITHUB_WORKSPACE}/opencvsharp
174+
cd ${GITHUB_WORKSPACE}
199175
dotnet pack "nuget/OpenCvSharp4.official.runtime.linux-x64.slim.csproj" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version
200176
201177
- uses: actions/upload-artifact@v6

.github/workflows/ubuntu.yml

Lines changed: 15 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Ubuntu
1+
name: Ubuntu
22

33
on:
44
pull_request:
@@ -27,7 +27,7 @@ jobs:
2727
steps:
2828
- uses: actions/checkout@v6
2929
with:
30-
path: opencvsharp
30+
submodules: true
3131

3232
- name: Install dependencies
3333
run: |
@@ -65,64 +65,14 @@ jobs:
6565
${{ github.workspace }}/opencv_artifacts/lib
6666
key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}
6767

68-
- name: Checkout OpenCV
69-
if: steps.opencv-cache.outputs.cache-hit != 'true'
70-
uses: actions/checkout@v6
71-
with:
72-
repository: opencv/opencv
73-
path: opencv
74-
ref: ${{ env.OPENCV_VERSION }}
75-
- name: Checkout OpenCV Contrib
76-
if: steps.opencv-cache.outputs.cache-hit != 'true'
77-
uses: actions/checkout@v6
78-
with:
79-
repository: opencv/opencv_contrib
80-
path: opencv_contrib
81-
ref: ${{ env.OPENCV_VERSION }}
82-
8368
- name: Build OpenCV
8469
if: steps.opencv-cache.outputs.cache-hit != 'true'
8570
run: |
8671
cmake \
72+
-C cmake/opencv_build_options.cmake \
8773
-S opencv \
8874
-B opencv/build \
89-
-D CMAKE_BUILD_TYPE=Release \
9075
-D OPENCV_EXTRA_MODULES_PATH=${GITHUB_WORKSPACE}/opencv_contrib/modules \
91-
-D BUILD_SHARED_LIBS=OFF \
92-
-D ENABLE_CXX11=ON \
93-
-D BUILD_EXAMPLES=OFF \
94-
-D BUILD_DOCS=OFF \
95-
-D BUILD_PERF_TESTS=OFF \
96-
-D BUILD_TESTS=OFF \
97-
-D BUILD_JAVA=OFF \
98-
-D BUILD_opencv_apps=OFF \
99-
-D BUILD_opencv_barcode=OFF \
100-
-D BUILD_opencv_java_bindings_generator=OFF \
101-
-D BUILD_opencv_python_bindings_generator=OFF \
102-
-D BUILD_opencv_python_tests=OFF \
103-
-D BUILD_opencv_ts=OFF \
104-
-D BUILD_opencv_js=OFF \
105-
-D BUILD_opencv_js_bindings_generator=OFF \
106-
-D BUILD_opencv_bioinspired=OFF \
107-
-D BUILD_opencv_ccalib=OFF \
108-
-D BUILD_opencv_datasets=OFF \
109-
-D BUILD_opencv_dnn_objdetect=OFF \
110-
-D BUILD_opencv_dpm=OFF \
111-
-D BUILD_opencv_fuzzy=OFF \
112-
-D BUILD_opencv_gapi=ON \
113-
-D BUILD_opencv_intensity_transform=OFF \
114-
-D BUILD_opencv_mcc=OFF \
115-
-D BUILD_opencv_objc_bindings_generator=OFF \
116-
-D BUILD_opencv_rapid=OFF \
117-
-D BUILD_opencv_reg=OFF \
118-
-D BUILD_opencv_stereo=OFF \
119-
-D BUILD_opencv_structured_light=OFF \
120-
-D BUILD_opencv_surface_matching=OFF \
121-
-D BUILD_opencv_wechat_qrcode=ON \
122-
-D BUILD_opencv_videostab=OFF \
123-
-D WITH_GSTREAMER=OFF \
124-
-D WITH_ADE=OFF \
125-
-D OPENCV_ENABLE_NONFREE=ON \
12676
-D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_artifacts
12777
cmake --build opencv/build -j 3
12878
cmake --install opencv/build
@@ -141,17 +91,17 @@ jobs:
14191
- name: Build OpenCvSharpExtern
14292
run: |
14393
cmake \
144-
-S opencvsharp/src \
145-
-B opencvsharp/src/build \
94+
-S src \
95+
-B src/build \
14696
-D CMAKE_BUILD_TYPE=Release \
14797
-D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/opencv_artifacts
148-
cmake --build opencvsharp/src/build -j
149-
ls opencvsharp/src/build/OpenCvSharpExtern
150-
cp opencvsharp/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/nuget/
98+
cmake --build src/build -j
99+
ls src/build/OpenCvSharpExtern
100+
cp src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/nuget/
151101
152102
- name: Check OpenCvSharpExtern
153103
run: |
154-
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
104+
cd ${GITHUB_WORKSPACE}/nuget/
155105
ldd libOpenCvSharpExtern.so
156106
nm libOpenCvSharpExtern.so
157107
echo -ne "#include <stdio.h> \n int core_Mat_sizeof(); int main(){ int i = core_Mat_sizeof(); printf(\"sizeof(Mat) = %d\", i); return 0; }" > test.c
@@ -165,11 +115,11 @@ jobs:
165115

166116
- name: Test
167117
run: |
168-
cd ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests
118+
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests
169119
dotnet build -c Release -f net8.0
170-
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/bin/Release/net8.0/
171-
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/
172-
sudo cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so /usr/lib/
120+
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/bin/Release/net8.0/
121+
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/
122+
sudo cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so /usr/lib/
173123
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net8.0 --runtime linux-x64 --logger "trx;LogFileName=test-results.trx" < /dev/null
174124
175125
- name: Create NuGet package
@@ -181,7 +131,7 @@ jobs:
181131
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
182132
echo "Package version: $version"
183133
184-
cd ${GITHUB_WORKSPACE}/opencvsharp
134+
cd ${GITHUB_WORKSPACE}
185135
package_project="OpenCvSharp4.official.runtime.ubuntu.${{ matrix.ubuntu }}-x64.csproj"
186136
dotnet pack "nuget/${package_project}" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version
187137
@@ -196,7 +146,7 @@ jobs:
196146
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
197147
echo "Package version: $version"
198148
199-
cd ${GITHUB_WORKSPACE}/opencvsharp
149+
cd ${GITHUB_WORKSPACE}
200150
dotnet pack "nuget/OpenCvSharp4.official.runtime.linux-x64.csproj" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version
201151
202152
ls ${GITHUB_WORKSPACE}/artifacts

0 commit comments

Comments
 (0)