mirror of
https://github.com/taurusxin/ncmdump.git
synced 2026-10-02 17:38:06 +08:00
89 lines
2.1 KiB
CMake
89 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
|
|
project(ncmdump LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
find_package(ZLIB)
|
|
find_package(TagLib REQUIRED)
|
|
|
|
if(MSVC)
|
|
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>")
|
|
endif()
|
|
|
|
FILE(GLOB COMMON_HEADERS src/include/*.h)
|
|
FILE(GLOB COMMON_SOURCES src/ncmcrypt.cpp src/utils/*.cpp)
|
|
FILE(GLOB EXECUTABLE_SOURCES src/main.cpp)
|
|
FILE(GLOB LIBRARY_HEADERS src/lib/libncmdump.h)
|
|
FILE(GLOB LIBRARY_SOURCES src/lib/*.cpp)
|
|
FILE(GLOB WIN_SOURCES src/platform/win32_init.cpp)
|
|
|
|
if(WIN32)
|
|
# windows executable
|
|
add_executable(ncmdump_exec
|
|
${COMMON_HEADERS}
|
|
${COMMON_SOURCES}
|
|
${EXECUTABLE_SOURCES}
|
|
${WIN_SOURCES}
|
|
)
|
|
|
|
# windows library
|
|
add_library(ncmdump_lib SHARED
|
|
${COMMON_HEADERS}
|
|
${COMMON_SOURCES}
|
|
${LIBRARY_HEADERS}
|
|
${LIBRARY_SOURCES}
|
|
${WIN_SOURCES}
|
|
)
|
|
|
|
target_include_directories(ncmdump_lib PRIVATE src/include)
|
|
set_target_properties(ncmdump_lib PROPERTIES OUTPUT_NAME "libncmdump")
|
|
target_link_libraries(ncmdump_lib TagLib::tag)
|
|
|
|
# msvc 需要额外调整编译选项
|
|
if(MSVC)
|
|
# 强制所有配置(Debug/Release 等)使用静态 C 运行时库
|
|
foreach(flag_var
|
|
CMAKE_CXX_FLAGS
|
|
CMAKE_C_FLAGS
|
|
CMAKE_CXX_FLAGS_DEBUG
|
|
CMAKE_CXX_FLAGS_RELEASE
|
|
)
|
|
if(${flag_var})
|
|
string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
else()
|
|
# linux / macOS executable
|
|
add_executable(ncmdump_exec
|
|
${COMMON_HEADERS}
|
|
${COMMON_SOURCES}
|
|
${EXECUTABLE_SOURCES}
|
|
)
|
|
endif()
|
|
|
|
# all executable target
|
|
set_target_properties(ncmdump_exec PROPERTIES OUTPUT_NAME "ncmdump")
|
|
target_include_directories(ncmdump_exec PRIVATE src/include)
|
|
|
|
# executable link to taglib
|
|
target_link_libraries(ncmdump_exec TagLib::tag)
|
|
|
|
include(GNUInstallDirs)
|
|
|
|
if(WIN32)
|
|
install(TARGETS ncmdump_exec ncmdump_lib
|
|
BUNDLE DESTINATION .
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
)
|
|
else()
|
|
install(TARGETS ncmdump_exec
|
|
BUNDLE DESTINATION .
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
)
|
|
endif()
|