123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- cmake_minimum_required(VERSION 3.5)
- project(aengine-editor LANGUAGES CXX)
- if(NOT WIN32)
- string(ASCII 27 Esc)
- set(ColourReset "${Esc}[m")
- set(ColourBold "${Esc}[1m")
- set(Red "${Esc}[31m")
- set(Green "${Esc}[32m")
- set(Yellow "${Esc}[33m")
- set(Blue "${Esc}[34m")
- set(Magenta "${Esc}[35m")
- set(Cyan "${Esc}[36m")
- set(White "${Esc}[37m")
- set(BoldRed "${Esc}[1;31m")
- set(BoldGreen "${Esc}[1;32m")
- set(BoldYellow "${Esc}[1;33m")
- set(BoldBlue "${Esc}[1;34m")
- set(BoldMagenta "${Esc}[1;35m")
- set(BoldCyan "${Esc}[1;36m")
- set(BoldWhite "${Esc}[1;37m")
- endif()
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic")
- set(USE_LTO OFF)
- set(USE_SUBMODULES_STATIC_LINKING ON)
- set(USE_STDLIB_STATIC_LINKING ON)
- if("${CMAKE_CXX_COMPILER}" MATCHES "mingw")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector")
- set(BUILD_WITH_MINGW ON)
- endif()
- if(USE_LTO)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto=auto")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=auto")
- message("Link time optimizations: ${BoldGreen}ON")
- set(AENGINE_USE_LTO ON)
- else()
- message("Link time optimizations: ${BoldRed}OFF")
- endif()
- if(USE_SUBMODULES_STATIC_LINKING)
- set(SPDLOG_BUILD_SHARED OFF)
- message("Submodules static linking: ${BoldGreen}ON")
- else()
- set(SPDLOG_BUILD_SHARED ON)
- message("Submodules static linking: ${BoldRed}OFF")
- endif()
- if(USE_STDLIB_STATIC_LINKING)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
- endif()
- file(GLOB_RECURSE PROJECT_SOURCES ./src/*.cpp)
- file(GLOB_RECURSE PROJECT_HEADERS ./include/*.hpp)
- include_directories(
- ${INCLUDE_DIRECTORIES}
- include
- 3d-party/spdlog/include
- 3d-party/imgui
- 3d-party/argparse/include
- AEngine/AEngine/core/include
- AEngine/AEngine/application/include
- AEngine/AEngine/renderer/include
- AEngine/AEngine/misc/include
- AEngine/3d-party/aengine-plugman/include
- AEngine/3d-party/glm
- )
- if(AENGINE_OPENGL_LOADER_CORE_PROFILE)
- include_directories(
- ${INCLUDE_DIRECTORIES}
- AEngine/3d-party/glad/core/include/
- )
- else()
- include_directories(
- ${INCLUDE_DIRECTORIES}
- AEngine/3d-party/glad/compat/include/
- )
- endif()
- if(BUILD_WITH_MINGW)
- set(GLFW_LIB_BIN glfw3)
- else()
- set(GLFW_LIB_BIN glfw)
- endif()
- add_subdirectory(AEngine)
- add_subdirectory(3d-party/spdlog)
- add_subdirectory(3d-party/imgui)
- add_executable(${PROJECT_NAME} ${PROJECT_SOURCES} ${PROJECT_HEADERS})
- target_link_libraries(${PROJECT_NAME} aengine-3d spdlog imgui ${GLFW_LIB_BIN})
- if(BUILD_WITH_MINGW)
- target_link_libraries(${PROJECT_NAME} gdi32 opengl32)
- endif()
|