diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a514e49..6a238d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,8 @@ on: jobs: build: + env: + VCPKG_COMMIT: '74e6536215718009aae747d86d84b78376bf9e09' name: "${{ matrix.os }} - BUILD_SHARED_LIBS=${{ matrix.shared_lib }}" strategy: fail-fast: false @@ -21,6 +23,8 @@ jobs: - uses: actions/checkout@v4 - uses: lukka/get-cmake@v3.28.4 - uses: lukka/run-vcpkg@v11 + with: + vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }} - name: Build with -DBUILD_SHARED_LIBS=${{ matrix.shared_lib }} uses: lukka/run-cmake@v10 with: diff --git a/CMakeLists.txt b/CMakeLists.txt index 77ab14d..041cec0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15) ################################ # set lib version here -project(TinyEXIF VERSION 1.0.3) +project(TinyEXIF VERSION 1.0.4) set(GENERIC_LIB_SOVERSION "1") include(GNUInstallDirs) @@ -25,22 +25,24 @@ option(BUILD_SHARED_LIBS "build as shared library" ON) option(LINK_CRT_STATIC_LIBS "link CRT static library" OFF) option(BUILD_DEMO "build demo binary" ON) +# Set MSVC runtime library globally so all targets use consistent /MT or /MD. +# This avoids LNK2038 mismatches between targets compiled with different CRT variants. +if(MSVC) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$>:DLL>") + if(MSVC_VERSION GREATER 1300) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4251") # needs to have dll-interface + endif() +endif() + add_library(TinyEXIF TinyEXIF.cpp TinyEXIF.h) add_library(TinyEXIF::TinyEXIF ALIAS TinyEXIF) -if(MSVC_VERSION GREATER 1300) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4251") # needs to have dll-interface -endif() - target_link_libraries(TinyEXIF tinyxml2::tinyxml2) set_target_properties(TinyEXIF PROPERTIES DEFINE_SYMBOL "TINYEXIF_EXPORT" VERSION "${TinyEXIF_VERSION}" SOVERSION "${GENERIC_LIB_SOVERSION}" - # set MSVC runtime linkage to static if LINK_CRT_STATIC_LIBS is TRUE - # LINK_CRT_STATIC_LIBS -> /MT or /MTd with Debug - # NOT LINK_CRT_STATIC_LIBS -> /MD or /MDd with Debug - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$>:DLL>" + MSVC_RUNTIME_LIBRARY "${CMAKE_MSVC_RUNTIME_LIBRARY}" ) target_include_directories(TinyEXIF PUBLIC @@ -55,6 +57,7 @@ target_compile_definitions(TinyEXIF if(BUILD_DEMO) add_executable(TinyEXIFdemo main.cpp) + set_target_properties(TinyEXIFdemo PROPERTIES MSVC_RUNTIME_LIBRARY "${CMAKE_MSVC_RUNTIME_LIBRARY}") target_link_libraries(TinyEXIFdemo TinyEXIF) endif() diff --git a/vcpkg.json b/vcpkg.json index d37f177..4d4cd89 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,9 +1,7 @@ { "name": "tinyexif", - "version-string": "1.0.3", - "builtin-baseline": "74e6536215718009aae747d86d84b78376bf9e09", + "version-string": "1.0.4", "dependencies": [ "tinyxml2" ] } -