First commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user