Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: C/C++ CI

on:
push:
branches:
- main
- dev
pull_request:
branches:
- main
- dev

jobs:
# Linux Job
linux:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- api: jack
APIcmake: JACK
deps: libjack-dev
- api: alsa
APIcmake: ALSA
deps: libasound-dev
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential cmake autoconf-archive ${{ matrix.deps }}
- name: Build with CMake (Linux)
run: |
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DRTMIDI_API_JACK=OFF -DRTMIDI_API_ALSA=OFF -DRTMIDI_API_${{ matrix.APIcmake }}=ON
cmake --build . --config Release

# macOS Job
macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies (macOS)
run: |
brew install cmake autoconf-archive automake
- name: Build with CMake (macOS)
run: |
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
55 changes: 36 additions & 19 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
# ----------------------------------
# Project
# ----------------------------------
cmake_minimum_required(VERSION 3.17)
project(cpp-pinyin VERSION 1.0.0.0 LANGUAGES CXX)
project(cpp-pinyin VERSION 1.0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)

Expand Down Expand Up @@ -44,7 +41,7 @@ if (CPP_PINYIN_INSTALL)
include(CMakePackageConfigHelpers)
endif ()
# ----------------------------------
# Main Project
# Project sources and targets
# ----------------------------------
file(GLOB_RECURSE _src include/*.h src/*.h src/*.cpp src/*/*.h src/*/*.cpp)

Expand All @@ -65,17 +62,17 @@ if (CPP_PINYIN_BUILD_TESTS)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/res/${dict}
${CMAKE_BINARY_DIR}/tests/${dict}
${CMAKE_CURRENT_SOURCE_DIR}/res/dict
${CMAKE_BINARY_DIR}/tests/dict
)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/${dict}
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/dict
DESTINATION .
)
endif ()

# ----------------------------------
# Add platform specific
# Add platform-specific settings
# ----------------------------------
if (WIN32)
set(RC_DESCRIPTION "A lightweight Chinese/Cantonese to Pinyin library.")
Expand All @@ -84,25 +81,25 @@ if (WIN32)
endif ()

# ----------------------------------
# link libraries
# Link libraries
# ----------------------------------
target_include_directories(${PROJECT_NAME} PRIVATE include src src/toneUtil)
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)

# ----------------------------------
# copy dictionary
# Copy dictionary files
# ----------------------------------
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/res/${dict}
${CMAKE_BINARY_DIR}/bin/${dict}
${CMAKE_CURRENT_SOURCE_DIR}/res/dict
${CMAKE_BINARY_DIR}/bin/dict
)

# ----------------------------------
# install
# Install settings
# ----------------------------------
if (CPP_PINYIN_INSTALL)
target_include_directories(${PROJECT_NAME} PUBLIC
Expand Down Expand Up @@ -146,15 +143,35 @@ if (CPP_PINYIN_INSTALL)
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)

if (NOT DEFINED VCPKG_DICT_DIR)
if (NOT DEFINED CPP_PINYIN_VCPKG_DICT_DIR)
set(dictdir ${CMAKE_INSTALL_LIBDIR}/dict)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/${dict}
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/dict
DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
else ()
set(dictdir ${CPP_PINYIN_VCPKG_DICT_DIR}/dict)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/${dict}
DESTINATION ${VCPKG_DICT_DIR}
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/dict
DESTINATION ${CPP_PINYIN_VCPKG_DICT_DIR}
)
endif ()
endif ()
endif ()

# ----------------------------------
# Package config (.pc file) generation
# ----------------------------------
set(version ${PROJECT_VERSION})

# Configure the .pc file
configure_file(
${CMAKE_CURRENT_LIST_DIR}/cpp-pinyin.pc.in
${CMAKE_BINARY_DIR}/cpp-pinyin.pc
@ONLY
)

# Install the .pc file
install(
FILES ${CMAKE_BINARY_DIR}/cpp-pinyin.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
)
4 changes: 2 additions & 2 deletions cmake/winrc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ set(_rc_content "#include <windows.h>
#define STRINGIFY(x) _STRINGIFY(x)

VS_VERSION_INFO VERSIONINFO
FILEVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},${PROJECT_VERSION_TWEAK}
PRODUCTVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},${PROJECT_VERSION_TWEAK}
FILEVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH}
PRODUCTVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH}
{
BLOCK \"StringFileInfo\"
{
Expand Down
19 changes: 19 additions & 0 deletions cpp-pinyin.pc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
prefix=${pcfiledir}/../..

# cpp-pinyin pkg-config file

exec_prefix=${prefix}/bin
libdir=${prefix}/lib
includedir=${prefix}/include

dictdir=${prefix}/share/cpp-pinyin/dict

Name: cpp-pinyin
Description: A lightweight Chinese/Cantonese to Pinyin library.
Version: @version@
Requires:
Conflicts:

Cflags: -I${includedir}
Libs: -L${libdir} -lcpp-pinyin

Loading