From 2b30ab966b54452986df99c62abc402f5cd80f40 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 00:35:23 +0300 Subject: [PATCH] add test and src subdirectories --- CMakeLists.txt | 68 ++++++--------------------------------------- src/CMakeLists.txt | 67 ++++++++++++++++++++++++++++++++++++++++++++ test/CMakeLists.txt | 19 +++++++++++++ 3 files changed, 94 insertions(+), 60 deletions(-) create mode 100644 src/CMakeLists.txt create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 579ee11b..2cfe479e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,13 +7,12 @@ cmake_minimum_required(VERSION 3.15) project(VoxelEngine) option(VOXELENGINE_BUILD_APPDIR OFF) +option(VOXELENGINE_BUILD_TESTS OFF) set(CMAKE_CXX_STANDARD 17) -file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) -file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) - -add_executable(${PROJECT_NAME} ${SOURCES}) +add_subdirectory(src) +add_executable(${PROJECT_NAME} src/voxel_engine.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) if(VOXELENGINE_BUILD_APPDIR) @@ -81,67 +80,16 @@ if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) endforeach() endif() -find_package(OpenGL REQUIRED) -find_package(GLEW REQUIRED) -find_package(OpenAL REQUIRED) -find_package(ZLIB REQUIRED) -if (NOT APPLE) - find_package(EnTT REQUIRED) -endif() - -if (WIN32) - if(VOXELENGINE_BUILD_WINDOWS_VCPKG) - set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") - set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") - find_package(glfw3 REQUIRED) - find_package(spng REQUIRED) - find_package(glm REQUIRED) - find_package(vorbis REQUIRED) - set(PNGLIB spng::spng) - set(VORBISLIB Vorbis::vorbis Vorbis::vorbisfile) - else() - find_package(Lua REQUIRED) - set(PNGLIB spng) - set(VORBISLIB vorbis vorbisfile) # not tested - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) - endif() -elseif(APPLE) - find_package(PkgConfig) - pkg_check_modules(LUAJIT REQUIRED luajit) - pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) - set(LUA_INCLUDE_DIR "/opt/homebrew/include/luajit-2.1") - set(LUA_LIBRARIES "/opt/homebrew/lib/libluajit-5.1.a") - message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") - message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") - find_package(PNG REQUIRED) - set(PNGLIB PNG::PNG) - set(VORBISLIB ${VORBIS_LDFLAGS}) - message(STATUS "Vorbis Lib: ${VORBIS_LDFLAGS}") -else() - find_package(PkgConfig) - pkg_check_modules(LUAJIT REQUIRED luajit) - pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) - set(LUA_LIBRARIES ${LUAJIT_LIBRARIES}) - set(LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIRS}) - find_package(PNG REQUIRED) - set(PNGLIB PNG::PNG) - set(VORBISLIB ${VORBIS_LDFLAGS}) -endif() - -set(LIBS "") - -if(UNIX) - find_package(glfw3 3.3 REQUIRED) - find_package(Threads REQUIRED) - set(LIBS ${LIBS} Threads::Threads) -endif() - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie -lstdc++fs") endif() include_directories(${LUA_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} ${LIBS} glfw OpenGL::GL ${OPENAL_LIBRARY} GLEW::GLEW ZLIB::ZLIB ${VORBISLIB} ${PNGLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) +target_link_libraries(${PROJECT_NAME} VoxelEngineSrc ${CMAKE_DL_LIBS}) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +if (VOXELENGINE_BUILD_TESTS) + enable_testing() + add_subdirectory(test) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..6eee811d --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,67 @@ +project(VoxelEngineSrc) + +set(CMAKE_CXX_STANDARD 17) + +file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +list(REMOVE_ITEM SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/voxel_engine.cpp) + +add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS}) + +find_package(OpenGL REQUIRED) +find_package(GLEW REQUIRED) +find_package(OpenAL REQUIRED) +find_package(ZLIB REQUIRED) +if (NOT APPLE) + find_package(EnTT REQUIRED) +endif() + +if (WIN32) + if(VOXELENGINE_BUILD_WINDOWS_VCPKG) + set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") + set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") + find_package(glfw3 REQUIRED) + find_package(spng REQUIRED) + find_package(glm REQUIRED) + find_package(vorbis REQUIRED) + set(PNGLIB spng::spng) + set(VORBISLIB Vorbis::vorbis Vorbis::vorbisfile) + else() + find_package(Lua REQUIRED) + set(PNGLIB spng) + set(VORBISLIB vorbis vorbisfile) # not tested + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) + endif() +elseif(APPLE) + find_package(PkgConfig) + pkg_check_modules(LUAJIT REQUIRED luajit) + pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) + set(LUA_INCLUDE_DIR "/opt/homebrew/include/luajit-2.1") + set(LUA_LIBRARIES "/opt/homebrew/lib/libluajit-5.1.a") + message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") + message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") + find_package(PNG REQUIRED) + set(PNGLIB PNG::PNG) + set(VORBISLIB ${VORBIS_LDFLAGS}) + message(STATUS "Vorbis Lib: ${VORBIS_LDFLAGS}") +else() + find_package(PkgConfig) + pkg_check_modules(LUAJIT REQUIRED luajit) + pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) + set(LUA_LIBRARIES ${LUAJIT_LIBRARIES}) + set(LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIRS}) + find_package(PNG REQUIRED) + set(PNGLIB PNG::PNG) + set(VORBISLIB ${VORBIS_LDFLAGS}) +endif() + +set(LIBS "") + +if(UNIX) + find_package(glfw3 3.3 REQUIRED) + find_package(Threads REQUIRED) + set(LIBS ${LIBS} Threads::Threads) +endif() + +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(${PROJECT_NAME} ${LIBS} glfw OpenGL::GL ${OPENAL_LIBRARY} GLEW::GLEW ZLIB::ZLIB ${VORBISLIB} ${PNGLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000..cbe038a6 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,19 @@ +project(VoxelEngineTest) + +set(CMAKE_CXX_STANDARD 17) + +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) + +find_package(GTest) + +add_executable(${PROJECT_NAME} ${SOURCES}) + +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src) +target_link_libraries( + ${PROJECT_NAME} + VoxelEngineSrc + GTest::gtest_main +) + +include(GoogleTest) +gtest_discover_tests(${PROJECT_NAME})