cmake_minimum_required(VERSION 3.14) project(ncmdump LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) set(WITH_ZLIB OFF) set(BUILD_TESTING OFF) add_subdirectory(taglib) if(MSVC) add_compile_options("$<$:/execution-charset:utf-8>") endif() FILE(GLOB HEADERS ./src/include/*.h) FILE(GLOB COMMON_SOURCES ./src/ncmcrypt.cpp ./src/utils/*.cpp) FILE(GLOB EXECUTABLE_SOURCES ./src/main.cpp) FILE(GLOB LIBRARY_SOURCES ./src/lib/libncmdump.cpp) FILE(GLOB WIN_EXEC_SOURCES ./src/platform/win32_init.cpp) if(WIN32) add_executable(ncmdump_exec ${HEADERS} ${COMMON_SOURCES} ${EXECUTABLE_SOURCES} ${WIN_EXEC_SOURCES} ) add_library(ncmdump_lib SHARED ${HEADERS} ${COMMON_SOURCES} ${LIBRARY_SOURCES} ) set_target_properties(ncmdump_exec PROPERTIES OUTPUT_NAME "ncmdump") set_target_properties(ncmdump_lib PROPERTIES OUTPUT_NAME "ncmdump") # Prefix all shared libraries with 'lib'. set(CMAKE_SHARED_LIBRARY_PREFIX "lib") target_include_directories(ncmdump_lib PRIVATE src/include) target_link_libraries(ncmdump_lib tag) target_include_directories(ncmdump_lib PRIVATE taglib) target_include_directories(ncmdump_lib PRIVATE taglib/taglib) target_include_directories(ncmdump_lib PRIVATE taglib/taglib/toolkit) target_include_directories(ncmdump_lib PRIVATE taglib/taglib/mpeg/id3v2) if(CMAKE_COMPILER_IS_GNUCXX) # static link when using MinGW target_link_options(ncmdump_exec PRIVATE -static) target_link_options(ncmdump_lib PRIVATE -static) endif() else() add_executable(ncmdump ${HEADERS} ${COMMON_SOURCES} ${EXECUTABLE_SOURCES} ) endif() # executable target target_include_directories(ncmdump_exec PRIVATE src/include) target_link_libraries(ncmdump_exec tag) target_include_directories(ncmdump_exec PRIVATE taglib) target_include_directories(ncmdump_exec PRIVATE taglib/taglib) target_include_directories(ncmdump_exec PRIVATE taglib/taglib/toolkit) target_include_directories(ncmdump_exec PRIVATE taglib/taglib/mpeg/id3v2) include(GNUInstallDirs) install(TARGETS ncmdump_exec ncmdump_lib BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )