feat: find v1 package
This commit is contained in:
parent
1d384cb185
commit
fb80d99cad
14
.github/workflows/autobuild.yml
vendored
14
.github/workflows/autobuild.yml
vendored
@ -8,7 +8,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# 1. Linux (Ubuntu)
|
# 1. Linux Build
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
job_linux:
|
job_linux:
|
||||||
name: Linux Build
|
name: Linux Build
|
||||||
@ -44,7 +44,7 @@ jobs:
|
|||||||
# 2. macOS Build
|
# 2. macOS Build
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
job_macos:
|
job_macos:
|
||||||
name: macOS Build (Brew)
|
name: macOS Build
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -63,10 +63,10 @@ jobs:
|
|||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-S ${{github.workspace}}
|
-S ${{github.workspace}}
|
||||||
|
|
||||||
- name: 构建项目
|
- name: Build
|
||||||
run: cmake --build ${{github.workspace}}/build --config Release
|
run: cmake --build ${{github.workspace}}/build --config Release
|
||||||
|
|
||||||
- name: 上传 macOS 产物
|
- name: Upload macOS Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-artifact-macos
|
name: build-artifact-macos
|
||||||
@ -99,9 +99,9 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
$toolchainFile = "${{ steps.vcpkg.outputs.vcpkgToolchainFile }}"
|
$toolchainFile = "${{ steps.vcpkg.outputs.vcpkgToolchainFile }}"
|
||||||
|
|
||||||
cmake -B ${{github.workspace}}/build `
|
cmake -B ${{github.workspace}}/build \
|
||||||
-DCMAKE_TOOLCHAIN_FILE=$toolchainFile `
|
-DCMAKE_TOOLCHAIN_FILE=$toolchainFile \
|
||||||
-DVCPKG_TARGET_TRIPLET={{VCPKG_TRIPLET}} `
|
-DVCPKG_TARGET_TRIPLET={{VCPKG_TRIPLET}} \
|
||||||
-S ${{github.workspace}}
|
-S ${{github.workspace}}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
|
@ -5,6 +5,7 @@ project(ncmdump LANGUAGES CXX)
|
|||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
find_package(ZLIB)
|
find_package(ZLIB)
|
||||||
find_package(TagLib REQUIRED)
|
find_package(TagLib REQUIRED)
|
||||||
|
|
||||||
|
90
cmake/FindTaglib.cmake
Normal file
90
cmake/FindTaglib.cmake
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
# FindTaglib.cmake
|
||||||
|
#
|
||||||
|
# Cross-platform TagLib finder.
|
||||||
|
# Supports:
|
||||||
|
# - Ubuntu/Debian (libtag1v5-dev)
|
||||||
|
# - macOS (Homebrew)
|
||||||
|
# - Windows (vcpkg/manual)
|
||||||
|
#
|
||||||
|
# Defines:
|
||||||
|
# Taglib_FOUND
|
||||||
|
# Taglib_INCLUDE_DIRS
|
||||||
|
# Taglib_LIBRARIES
|
||||||
|
# Taglib::Taglib (imported target)
|
||||||
|
|
||||||
|
# --- First: if official Config file exists (v2.x), use it directly ---
|
||||||
|
find_package(Taglib CONFIG QUIET)
|
||||||
|
if(Taglib_FOUND)
|
||||||
|
message(STATUS "Using system-provided Taglib (with CMake config).")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# --- Manual search fallback (for TagLib v1.x without config) ---
|
||||||
|
message(STATUS "No Taglib CMake config found, falling back to manual search...")
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
# --- Windows ---
|
||||||
|
find_path(Taglib_INCLUDE_DIR tag.h
|
||||||
|
PATH_SUFFIXES taglib
|
||||||
|
PATHS
|
||||||
|
"C:/Program Files/taglib/include"
|
||||||
|
"C:/Program Files (x86)/taglib/include"
|
||||||
|
"${CMAKE_SOURCE_DIR}/third_party/taglib/include"
|
||||||
|
)
|
||||||
|
find_library(Taglib_LIBRARY NAMES tag taglib
|
||||||
|
PATHS
|
||||||
|
"C:/Program Files/taglib/lib"
|
||||||
|
"C:/Program Files (x86)/taglib/lib"
|
||||||
|
"${CMAKE_SOURCE_DIR}/third_party/taglib/lib"
|
||||||
|
)
|
||||||
|
|
||||||
|
elseif(APPLE)
|
||||||
|
# --- macOS ---
|
||||||
|
find_path(Taglib_INCLUDE_DIR tag.h
|
||||||
|
PATH_SUFFIXES taglib
|
||||||
|
PATHS
|
||||||
|
/usr/local/include
|
||||||
|
/opt/homebrew/include
|
||||||
|
)
|
||||||
|
find_library(Taglib_LIBRARY NAMES tag taglib
|
||||||
|
PATHS
|
||||||
|
/usr/local/lib
|
||||||
|
/opt/homebrew/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
else()
|
||||||
|
# --- Linux / Unix ---
|
||||||
|
find_path(Taglib_INCLUDE_DIR tag.h
|
||||||
|
PATH_SUFFIXES taglib
|
||||||
|
PATHS
|
||||||
|
/usr/include
|
||||||
|
/usr/local/include
|
||||||
|
)
|
||||||
|
find_library(Taglib_LIBRARY NAMES tag taglib
|
||||||
|
PATHS
|
||||||
|
/usr/lib /usr/lib64
|
||||||
|
/usr/local/lib /usr/local/lib64
|
||||||
|
/usr/lib/x86_64-linux-gnu
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Taglib DEFAULT_MSG
|
||||||
|
Taglib_LIBRARY Taglib_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
if(Taglib_FOUND)
|
||||||
|
set(Taglib_INCLUDE_DIRS ${Taglib_INCLUDE_DIR})
|
||||||
|
set(Taglib_LIBRARIES ${Taglib_LIBRARY})
|
||||||
|
|
||||||
|
if(NOT TARGET Taglib::Taglib)
|
||||||
|
add_library(Taglib::Taglib UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(Taglib::Taglib PROPERTIES
|
||||||
|
IMPORTED_LOCATION ${Taglib_LIBRARY}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${Taglib_INCLUDE_DIR}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "Taglib not found. Please install libtag1v5-dev (Linux), \
|
||||||
|
brew install taglib (macOS), or add manual path (Windows).")
|
||||||
|
endif()
|
Loading…
x
Reference in New Issue
Block a user