cmake_minimum_required (VERSION 3.8) if (POLICY CMP0141) cmake_policy(SET CMP0141 NEW) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$,$>,$<$:EditAndContinue>,$<$:ProgramDatabase>>") endif() set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) project (engine) # List sources file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "src/*.cpp" "src/*.c" "include/*.hpp" "include/*.h" ) # Find dependencies find_package(Boost REQUIRED COMPONENTS lockfree) find_package(xxHash CONFIG REQUIRED) find_package(glfw3 CONFIG REQUIRED) # Link library add_executable(${PROJECT_NAME} ${SOURCES}) target_link_libraries(${PROJECT_NAME} PUBLIC utils) target_link_libraries(${PROJECT_NAME} PUBLIC engine-api) target_link_libraries(${PROJECT_NAME} PUBLIC magnum-renderer) target_link_libraries(${PROJECT_NAME} PRIVATE Boost::lockfree) target_link_libraries(${PROJECT_NAME} PRIVATE xxHash::xxhash) target_link_libraries(${PROJECT_NAME} PRIVATE p7) target_link_libraries(${PROJECT_NAME} PRIVATE glfw) target_include_directories(${PROJECT_NAME} PUBLIC include/) if (CMAKE_VERSION VERSION_GREATER 3.12) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20) endif() # Compile options if (APP_VERSION) string(REPLACE "." ";" APP_VERSION_LIST ${APP_VERSION}) list(GET APP_VERSION_LIST 0 MAJOR_VERSION) list(GET APP_VERSION_LIST 1 MINOR_VERSION) list(GET APP_VERSION_LIST 2 PATCH_VERSION) target_compile_definitions(${PROJECT_NAME} PRIVATE APP_VERSION PRIVATE MAJOR_VERSION=${MAJOR_VERSION} PRIVATE MINOR_VERSION=${MINOR_VERSION} PRIVATE PATCH_VERSION=${PATCH_VERSION} ) endif() # Set a symbolic link so executable can find the /assets folder set(link_src "${CMAKE_SOURCE_DIR}/assets") set(link_dst "${CMAKE_CURRENT_BINARY_DIR}/assets") add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink ${link_src} ${link_dst} DEPENDS ${link_dst} COMMENT "symbolic link ${link_src} => ${link_dst}" )