79 lines
2.5 KiB
CMake
79 lines
2.5 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(cyrusengine_imperial VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
option(CYRUSENGINE_BUILD_PLAYGROUND "Build the playground executable" ON)
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
find_package(GLEW REQUIRED)
|
|
find_package(Threads REQUIRED)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(GLFW3 REQUIRED IMPORTED_TARGET glfw3)
|
|
|
|
file(GLOB_RECURSE CYRUSENGINE_SOURCES CONFIGURE_DEPENDS
|
|
"${PROJECT_SOURCE_DIR}/src/graphics/*.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/ecs/*.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/physics/*.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/Box2D/*.cpp"
|
|
)
|
|
|
|
list(APPEND CYRUSENGINE_SOURCES
|
|
"${PROJECT_SOURCE_DIR}/src/Base.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/CyrusEngine.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/freetype2/freetype_amalgam.c"
|
|
)
|
|
|
|
file(GLOB STB_SOURCES CONFIGURE_DEPENDS
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/stb_collection/*.c"
|
|
)
|
|
list(APPEND CYRUSENGINE_SOURCES ${STB_SOURCES})
|
|
|
|
add_library(cyrusengine STATIC ${CYRUSENGINE_SOURCES})
|
|
add_library(CyrusEngine::CyrusEngine ALIAS cyrusengine)
|
|
|
|
target_compile_features(cyrusengine PUBLIC cxx_std_23)
|
|
target_include_directories(cyrusengine PUBLIC
|
|
"${PROJECT_SOURCE_DIR}/src"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/freetype2/include"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/entt"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/glm"
|
|
)
|
|
target_link_libraries(cyrusengine PUBLIC
|
|
OpenGL::GL
|
|
GLEW::GLEW
|
|
PkgConfig::GLFW3
|
|
)
|
|
|
|
if(CYRUSENGINE_BUILD_PLAYGROUND)
|
|
pkg_check_modules(SNDFILE REQUIRED IMPORTED_TARGET sndfile)
|
|
pkg_check_modules(VORBISFILE REQUIRED IMPORTED_TARGET vorbisfile)
|
|
pkg_check_modules(PORTAUDIO REQUIRED IMPORTED_TARGET portaudio-2.0)
|
|
|
|
file(GLOB PLAYGROUND_SOURCES CONFIGURE_DEPENDS
|
|
"${PROJECT_SOURCE_DIR}/examples/playground/*.cpp"
|
|
)
|
|
|
|
add_executable(playground ${PLAYGROUND_SOURCES})
|
|
target_compile_features(playground PRIVATE cxx_std_23)
|
|
target_include_directories(playground PRIVATE
|
|
"${PROJECT_SOURCE_DIR}/examples"
|
|
"${PROJECT_SOURCE_DIR}/src"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/freetype2/include"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/entt"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/glm"
|
|
"${PROJECT_SOURCE_DIR}/src/3rdparty/microui"
|
|
)
|
|
target_link_libraries(playground PRIVATE
|
|
CyrusEngine::CyrusEngine
|
|
PkgConfig::SNDFILE
|
|
PkgConfig::VORBISFILE
|
|
PkgConfig::PORTAUDIO
|
|
Threads::Threads
|
|
${CMAKE_DL_LIBS}
|
|
)
|
|
|
|
endif() |