test: new finder

This commit is contained in:
TaurusXin 2025-10-04 16:47:11 +08:00
parent b17f15d582
commit ba56ee0e7c
3 changed files with 47 additions and 31 deletions

View File

@ -72,7 +72,6 @@ jobs:
name: build-artifact-macos
path: ${{github.workspace}}/build/ncmdump
# ----------------------------------------------------------------------
# 3. Windows Build
# ----------------------------------------------------------------------
@ -90,16 +89,16 @@ jobs:
- name: Install Dependencies
uses: lukka/run-vcpkg@v11
id: Vcpkg
id: vcpkg
with:
vcpkgJsonGlob: '**/vcpkg.json'
vcpkgTriplet: ${{ env.VCPKG_TRIPLET }}
- name: Configure CMake
run: |
cmake -B ${{github.workspace}}/build
-DCMAKE_TOOLCHAIN_FILE=${{ steps.vcpkg.outputs.vcpkgToolchainFile }}
-DVCPKG_TARGET_TRIPLET=${{ env.VCPKG_TRIPLET }}
cmake -B ${{github.workspace}}/build `
-DCMAKE_TOOLCHAIN_FILE=${{ steps.vcpkg.outputs.vcpkgToolchainFile }} `
-DVCPKG_TARGET_TRIPLET=${{ env.VCPKG_TRIPLET }} `
-S ${{github.workspace}}
- name: Build

View File

@ -5,10 +5,8 @@ project(ncmdump LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Ubuntu 24 Does not contains taglib 2.x, only 1.x, find it manually.
if(UNIX AND NOT APPLE)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
endif()
find_package(ZLIB)
find_package(TagLib REQUIRED)

View File

@ -1,29 +1,46 @@
# FindTaglib.cmake
# Try to find TagLib library and headers
# Once done, it will define:
# Taglib_FOUND
# Taglib_INCLUDE_DIRS
# Taglib_LIBRARIES
# Taglib::Taglib (imported target)
find_path(Taglib_INCLUDE_DIR tag.h
PATH_SUFFIXES taglib
PATHS /usr/include /usr/local/include
)
find_library(Taglib_LIBRARY NAMES tag libtag
PATHS /usr/lib /usr/local/lib /usr/lib/x86_64-linux-gnu
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Taglib DEFAULT_MSG
Taglib_LIBRARY Taglib_INCLUDE_DIR
)
# --- Try official config first (Taglib 2.x) ---
find_package(Taglib CONFIG QUIET)
if(Taglib_FOUND)
message(STATUS "Using system Taglib (CMake config found)")
return()
endif()
# --- Try pkg-config (common on Linux) ---
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(TAGLIB taglib)
endif()
# --- Manual search fallback ---
if(TAGLIB_FOUND)
set(Taglib_INCLUDE_DIRS ${TAGLIB_INCLUDE_DIRS})
set(Taglib_LIBRARIES ${TAGLIB_LIBRARIES})
message(STATUS "Using Taglib from pkg-config: ${Taglib_LIBRARIES}")
else()
message(STATUS "Falling back to manual search for Taglib...")
find_path(Taglib_INCLUDE_DIR tag.h
PATH_SUFFIXES taglib
PATHS
/usr/include
/usr/local/include
/usr/include/taglib
)
find_library(Taglib_LIBRARY NAMES tag taglib
PATHS
/usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
/usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu
)
set(Taglib_INCLUDE_DIRS ${Taglib_INCLUDE_DIR})
set(Taglib_LIBRARIES ${Taglib_LIBRARY})
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Taglib DEFAULT_MSG Taglib_LIBRARY Taglib_INCLUDE_DIR)
if(Taglib_FOUND)
if(NOT TARGET Taglib::Taglib)
add_library(Taglib::Taglib UNKNOWN IMPORTED)
set_target_properties(Taglib::Taglib PROPERTIES
@ -31,4 +48,6 @@ if(Taglib_FOUND)
INTERFACE_INCLUDE_DIRECTORIES ${Taglib_INCLUDE_DIR}
)
endif()
else()
message(WARNING "Taglib not found! Try: sudo apt install libtag1v5-dev")
endif()