Skip to content

Commit 43edb1c

Browse files
author
J. Cappelletto
committed
Quality-of-life updates on the CI job, reorganize string cmake creation
1 parent 2973d83 commit 43edb1c

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

.github/workflows/ci.yml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ jobs:
6565
with:
6666
path: ${{ env.OPENCV_VENDOR_PREFIX }}
6767
key: opencv-${{ env.OPENCV_VERSION }}-${{ runner.os }}-${{ hashFiles('third_party/opencv/CMakeLists.txt') }}-ffmpegON-lapackOFF-worldOFF-v1
68+
restore-keys: |
69+
opencv-${{ env.OPENCV_VERSION }}-${{ runner.os }}-
70+
opencv-
6871
6972
# Build vendored OpenCV only if cache miss (Ubuntu)
7073
- name: Build vendored OpenCV (Ubuntu)
@@ -77,6 +80,10 @@ jobs:
7780
cmake --build third_party/opencv/build --target opencv_src --parallel 2
7881
test -f "${OPENCV_VENDOR_PREFIX}/lib/cmake/opencv4/OpenCVConfig.cmake"
7982
83+
- name: Log cache status (Ubuntu)
84+
if: matrix.os == 'ubuntu-latest'
85+
run: echo "OpenCV cache hit: ${{ steps.cache-opencv.outputs.cache-hit }}"
86+
8087
# -------- Windows toolchain --------
8188
- name: Setup MSVC (Windows)
8289
if: matrix.os == 'windows-latest'
@@ -141,39 +148,43 @@ jobs:
141148
- name: Configure (CMake)
142149
shell: pwsh
143150
run: |
151+
# Decide MSVC runtime first (literal values only)
152+
$msvcRuntime = if ("${{ matrix.os }}" -eq "windows-latest" -and "${{ env.BUILD_TYPE }}" -eq "Debug") { "MultiThreadedDebugDLL" } else { "MultiThreadedDLL" }
153+
154+
# Base args
144155
$cmakeArgs = @(
145156
"-S", ".", "-B", "build",
146157
"-G", "Ninja",
147158
"-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}",
148159
"-DBUILD_TESTS=ON",
149160
"-DPROJECT_VERSION=${{ env.PKG_VERSION }}",
150-
"-DVIDEOSTRIP_BUNDLE_OPENCV=ON",
151-
"-DVIDEOSTRIP_OPENCV_VERSION=${{ env.OPENCV_VERSION }}",
152161
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=build/bin",
153162
"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=build/lib",
154163
"-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=build/lib"
155164
)
165+
156166
if ("${{ matrix.os }}" -eq "windows-latest") {
157-
# On Windows use vcpkg OpenCV; disable vendored OpenCV and pin MSVC runtime
167+
# Windows: use vcpkg OpenCV; do not vendor OpenCV
158168
$cmakeArgs += @(
159169
"-DCMAKE_TOOLCHAIN_FILE=${env:VCPKG_TOOLCHAIN}",
160170
"-DVCPKG_TARGET_TRIPLET=${env:VCPKG_TARGET_TRIPLET}",
161171
"-DVCPKG_HOST_TRIPLET=${env:VCPKG_HOST_TRIPLET}",
162172
"-DVCPKG_DEFAULT_BINARY_CACHE=${env:VCPKG_DEFAULT_BINARY_CACHE}",
163-
"-DVIDEOSTRIP_BUNDLE_OPENCV=OFF"
173+
"-DVIDEOSTRIP_BUNDLE_OPENCV=OFF",
174+
"-DCMAKE_MSVC_RUNTIME_LIBRARY=$msvcRuntime"
164175
)
165176
} else {
177+
# Linux: vendor OpenCV and (optionally) hint OpenCV_DIR if present
166178
$cmakeArgs += @(
179+
"-DVIDEOSTRIP_BUNDLE_OPENCV=ON",
180+
"-DVIDEOSTRIP_OPENCV_VERSION=${{ env.OPENCV_VERSION }}",
167181
"-DCMAKE_C_COMPILER_LAUNCHER=$env:CMAKE_C_COMPILER_LAUNCHER",
168182
"-DCMAKE_CXX_COMPILER_LAUNCHER=$env:CMAKE_CXX_COMPILER_LAUNCHER"
169183
)
184+
$vendorCfg = "${{ env.OPENCV_VENDOR_PREFIX }}/lib/cmake/opencv4"
185+
if (Test-Path $vendorCfg) { $cmakeArgs += @("-DOpenCV_DIR=$vendorCfg") }
170186
}
171-
if ("${{ matrix.os }}" -eq "windows-latest") {
172-
# Choose a literal MSVC runtime value (generator expressions are not allowed during compiler checks)
173-
if ("${{ env.BUILD_TYPE }}" -eq "Debug") { $msvcRuntime = "MultiThreadedDebugDLL" } else { $msvcRuntime = "MultiThreadedDLL" }
174-
# Append the literal to the existing list of cmake arguments
175-
$cmakeArgs += @("-DCMAKE_MSVC_RUNTIME_LIBRARY=$msvcRuntime")
176-
}
187+
177188
cmake @cmakeArgs
178189
179190
# -------- Build --------

0 commit comments

Comments
 (0)