Kekrooms/CMakeLists.txt

69 lines
2.1 KiB
CMake
Raw Permalink Normal View History

2023-09-09 16:57:42 +02:00
cmake_minimum_required(VERSION 3.13)
project(Kekrooms VERSION 1.0)
option(KEKROOMS_DEBUG "Build with debug information" OFF)
if(UNIX)
set(KEKROOMS_TARGET_PLATFORM Linux)
endif()
if(WIN32)
set(KEKROOMS_TARGET_PLATFORM Windows)
endif()
message("Debug: ${KEKROOMS_DEBUG}")
message("Target platform: ${KEKROOMS_TARGET_PLATFORM}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(KEKROOMS_RESOURCE_DIR "${PROJECT_SOURCE_DIR}/src/kekrooms/res")
file(GLOB_RECURSE KEKROOMS_SOURCE_FILES "src/kekrooms/cpp/*.cpp")
file(GLOB_RECURSE KEKROOMS_RESOURCE_FILES "${KEKROOMS_RESOURCE_DIR}/*")
file(GLOB_RECURSE KEKROOMS_RELATIVE_RESOURCE_FILES RELATIVE ${KEKROOMS_RESOURCE_DIR} "${KEKROOMS_RESOURCE_DIR}/*")
if(${KEKROOMS_DEBUG})
add_compile_options(-Wall -g)
else()
add_compile_options(-Wall -O3)
endif()
add_subdirectory(dependencies/kekengine)
# kekrooms resources
add_custom_target(kekrooms_res ALL DEPENDS ${KEKENGINE_RESOURCE_FILES})
add_dependencies(kekrooms_res kekengine_static)
get_target_property(KEKENGINE_BINARY_DIR kekengine "RUNTIME_OUTPUT_DIRECTORY")
add_custom_command(TARGET kekrooms_res PRE_BUILD
BYPRODUCTS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
COMMAND ${CMAKE_COMMAND} -E
copy "${KEKENGINE_BINARY_DIR}/resources.tar" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar"
COMMAND ${CMAKE_COMMAND} -E
chdir ${KEKROOMS_RESOURCE_DIR}
tar rf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar ${KEKROOMS_RELATIVE_RESOURCE_FILES})
# kekrooms
add_executable(kekrooms ${KEKROOMS_SOURCE_FILES})
add_dependencies(kekrooms kekrooms_res)
find_package(PkgConfig REQUIRED)
pkg_check_modules(FREETYPE REQUIRED freetype2)
target_include_directories(kekrooms PUBLIC ${FREETYPE_INCLUDE_DIRS})
pkg_check_modules(BULLET REQUIRED bullet)
target_include_directories(kekrooms PUBLIC ${BULLET_INCLUDE_DIRS})
if(WIN32)
target_link_options(kekrooms PUBLIC -static-libgcc -static-libstdc++ -static)
endif()
target_link_libraries(kekrooms PUBLIC kekengine_static)