[Add] Dependency management to build system.

This commit is contained in:
Ritchie Cunningham 2025-09-21 16:36:45 +01:00
parent 208314f54a
commit 019059e209
5 changed files with 27 additions and 35 deletions

View File

@ -4,6 +4,21 @@ project(bettola CXX)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
sol2
GIT_REPOSITORY https://github.com/ThePhD/sol2.git
GIT_TAG v3.3.1
)
FetchContent_MakeAvailable(sol2)
FetchContent_Declare(
SDL_net
GIT_REPOSITORY https://github.com/libsdl-org/SDL_net.git
GIT_TAG release-3.0.0
)
FetchContent_MakeAvailable(SDL_net)
add_subdirectory(common) add_subdirectory(common)
add_subdirectory(client) add_subdirectory(client)
add_subdirectory(server) add_subdirectory(server)

View File

@ -7,39 +7,17 @@ The following dependencies are required:
- A C++ compiler (e.g., clang, g++) - A C++ compiler (e.g., clang, g++)
- CMake (3.16 or newer) - CMake (3.16 or newer)
- SDL3 development libraries - SDL3 development libraries
- SDL3_net development libraries - SDL3_net development libraries (managed by CMake)
- GLEW development libraries - GLEW development libraries
- FreeType development libraries - FreeType development libraries
- Lua 5.4 development libraries
- sol2 (header-only, managed by CMake)
** Installation (Debian) ** Installation (Debian)
You can install most required dependencies with the following command: You can install most required dependencies with the following command:
#+BEGIN_SRC bash #+BEGIN_SRC bash
sudo apt update sudo apt update
sudo apt install build-essential clang cmake libsdl3-dev libglew-dev libfreetype-dev sudo apt install build-essential clang cmake libsdl3-dev libglew-dev libfreetype-dev liblua5.4-dev
#+END_SRC
** Installing SDL3_net (from source)
As SDL3 is new, the networking library may require compiling and installed
manually.
1 *Clone the repository:*
#+BEGIN_SRC bash
git clone https://github.com/libsdl-org/SDL_net.git
cd SDL_net
#+END_SRC
2 *Build and install:*
#+BEGIN_SRC bash
mkdir build && cd build
cmake ..
make
sudo make install
# You can delete the downloaded SDL_net directory after install.
#+END_SRC
3 *Update linker cache:*
If you have linker issues after install SDL3_net, try updating your linker
cache.
#+BEGIN_SRC bash
sudo ldconfig
#+END_SRC #+END_SRC
* Build Instructions * Build Instructions

View File

@ -5,13 +5,11 @@ add_executable(bettolac
) )
find_package(SDL3 REQUIRED) find_package(SDL3 REQUIRED)
find_package(SDL3_net REQUIRED)
find_package(GLEW REQUIRED) find_package(GLEW REQUIRED)
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
find_package(Freetype REQUIRED) find_package(Freetype REQUIRED)
target_link_libraries(bettolac PRIVATE bettola SDL3::SDL3 SDL3_net target_link_libraries(bettolac PRIVATE bettola SDL3::SDL3 SDL3_net::SDL3_net
GLEW::glew OpenGL::GL Freetype::Freetype) GLEW::glew OpenGL::GL Freetype::Freetype)
target_include_directories(bettolac PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src target_include_directories(bettolac PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
/usr/local/include/SDL3_net)

View File

@ -1,8 +1,12 @@
find_package(Lua 5.4 REQUIRED)
file(GLOB_RECURSE BETTOLA_SOURCES "src/*.cpp") file(GLOB_RECURSE BETTOLA_SOURCES "src/*.cpp")
add_library(bettola add_library(bettola
${BETTOLA_SOURCES} ${BETTOLA_SOURCES}
) )
target_link_libraries(bettola PUBLIC ${LUA_LIBRARIES} sol2)
target_include_directories(bettola PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) target_include_directories(bettola PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)

View File

@ -5,10 +5,7 @@ add_executable(bettolas
) )
find_package(SDL3 REQUIRED) find_package(SDL3 REQUIRED)
find_package(SDL3_net REQUIRED)
target_link_libraries(bettolas PRIVATE bettola SDL3::SDL3 SDL3_net) target_link_libraries(bettolas PRIVATE bettola SDL3::SDL3 SDL3_net::SDL3_net)
target_include_directories(bettolas PUBLIC target_include_directories(bettolas PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
${CMAKE_CURRENT_SOURCE_DIR}/src
/usr/local/include/SDL3_net)