108 lines
3.9 KiB
CMake
Executable file
108 lines
3.9 KiB
CMake
Executable file
#Variables
|
|
#-----------------------------------------------------------------------------------------
|
|
set(PROJ_NAME PianoLibrary)
|
|
set(MAJOR_VER 0)
|
|
set(MINOR_VER 1)
|
|
#-----------------------------------------------------------------------------------------
|
|
|
|
#Setup
|
|
#-----------------------------------------------------------------------------------------
|
|
set(CMAKE_CXX_COMPILER "clang++")
|
|
set(CMAKE_C_COMPILER "clang")
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
cmake_minimum_required(VERSION 3.18)
|
|
project(${PROJ_NAME} LANGUAGES C CXX)
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
file(STRINGS "./other/build.nr" BUILD_NUMBER)
|
|
#-----------------------------------------------------------------------------------------
|
|
|
|
message("** Building ${PROJ_NAME} ${MAJOR_VER}.${MINOR_VER}.${BUILD_NUMBER}")
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
message(STATUS "Debug Configuration")
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
message(STATUS "Release Configuration")
|
|
endif()
|
|
|
|
#Sources
|
|
#-----------------------------------------------------------------------------------------
|
|
list(APPEND INCLUDE_DIRS
|
|
${CMAKE_CURRENT_LIST_DIR}/src
|
|
)
|
|
list(APPEND SOURCE_FILES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/main.cpp
|
|
)
|
|
#-----------------------------------------------------------------------------------------
|
|
|
|
#Targets
|
|
#-----------------------------------------------------------------------------------------
|
|
set(MAIN_TARGET pianolib)
|
|
add_executable(${MAIN_TARGET} ${SOURCE_FILES})
|
|
if(WIN32)
|
|
target_sources(${MAIN_TARGET} PUBLIC "${CMAKE_CURRENT_LIST_DIR}/other/appIcon.rc")
|
|
endif()
|
|
target_include_directories(${MAIN_TARGET} PUBLIC ${INCLUDE_DIRS})
|
|
|
|
target_compile_definitions(${MAIN_TARGET} PUBLIC BUILD_NR=${BUILD_NUMBER} MAJ_V=${MAJOR_VER} MIN_V=${MINOR_VER} VERSION_STR="${MAJOR_VER}.${MINOR_VER}.${BUILD_NUMBER}")
|
|
|
|
if (WIN32)
|
|
set(MSYS2_UCRT64 "C:/msys64/ucrt64")
|
|
target_include_directories(${MAIN_TARGET} PRIVATE
|
|
"${MSYS2_UCRT64}/include"
|
|
"${MSYS2_UCRT64}/include/c++/13.2.0"
|
|
"${MSYS2_UCRT64}/include/c++/13.2.0/x86_64-w64-mingw32"
|
|
)
|
|
endif()
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
target_compile_definitions(${MAIN_TARGET} PUBLIC BUILD_CONFIG_DEBUG OX_DEBUG_BUILD)
|
|
add_compile_options(-MMD -MP -Wall -ggdb)
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
target_compile_definitions(${MAIN_TARGET} PUBLIC BUILD_CONFIG_RELEASE OX_RELEASE_BUILD)
|
|
add_compile_options(-O3 -MMD -MP -Wall)
|
|
endif()
|
|
|
|
if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
set_target_properties(${MAIN_TARGET} PROPERTIES
|
|
WIN32_EXECUTABLE TRUE
|
|
)
|
|
endif()
|
|
#-----------------------------------------------------------------------------------------
|
|
|
|
#Linking
|
|
#-----------------------------------------------------------------------------------------
|
|
if (WIN32)
|
|
target_link_libraries(${MAIN_TARGET} mingw32 SDL3 SDL3_ttf SDL3_image)
|
|
endif (WIN32)
|
|
|
|
if (APPLE)
|
|
cmake_policy(SET CMP0167 OLD)
|
|
find_package(Boost REQUIRED COMPONENTS regex)
|
|
target_link_libraries(${MAIN_TARGET} Boost::regex)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(SDL3 REQUIRED sdl3)
|
|
pkg_check_modules(SDL3_IMAGE REQUIRED sdl3-image)
|
|
pkg_check_modules(SDL3_TTF REQUIRED sdl3-ttf)
|
|
target_include_directories(${MAIN_TARGET} PUBLIC
|
|
${SDL3_INCLUDE_DIRS}
|
|
${SDL3_IMAGE_INCLUDE_DIRS}
|
|
${SDL3_TTF_INCLUDE_DIRS}
|
|
)
|
|
target_link_directories(${MAIN_TARGET} PUBLIC
|
|
${SDL3_LIBRARY_DIRS}
|
|
${SDL3_IMAGE_LIBRARY_DIRS}
|
|
${SDL3_TTF_LIBRARY_DIRS}
|
|
)
|
|
target_link_libraries(${MAIN_TARGET}
|
|
${SDL3_LIBRARIES}
|
|
${SDL3_IMAGE_LIBRARIES}
|
|
${SDL3_TTF_LIBRARIES}
|
|
)
|
|
elseif (UNIX)
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,'$ORIGIN',-rpath,/usr/lib,-rpath,/usr/local/lib")
|
|
target_link_libraries(${MAIN_TARGET} xcb xcb-randr boost_regex SDL3 SDL3_image)
|
|
endif ()
|
|
|
|
target_compile_definitions(${MAIN_TARGET} PUBLIC CPPHTTPLIB_MBEDTLS_SUPPORT)
|
|
target_link_libraries(${MAIN_TARGET} mbedtls mbedx509 mbedcrypto)
|
|
target_link_libraries(${MAIN_TARGET} ostd ogfx)
|
|
#-----------------------------------------------------------------------------------------
|