Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 25 additions & 22 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,40 @@
name: CMake

on: [push]
on: [push, pull_request]

env:
BUILD_TYPE: Release
BUILD_TYPE: Debug

jobs:
Build_And_Test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Fetch git submodules
run: git submodule update --init --recursive

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Install Dependencies
run: sudo apt update; sudo apt install libgtest-dev

- uses: actions/checkout@v4
with:
submodules: recursive

- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = nix-command flakes
- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
run: |
nix develop --command bash -c "
cmake -S . -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_TESTS=ON
"

- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE
run: |
nix develop --command bash -c "
cmake --build build --config $BUILD_TYPE
"

- name: Run Tests
working-directory: ${{runner.workspace}}/build
shell: bash
run: ./out/bin/Template.gtest
run: |
nix develop --command bash -c "
ctest --test-dir build --output-on-failure
"
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "cmake"]
path = lib/cmake
url = git@github.com:OliverBenz/cmake_files.git
url = https://github.com/OliverBenz/cmake_files.git
15 changes: 6 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,15 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

option(BUILD_TESTS "Create the unit tests for the project." True)
option(BUILD_EXAMPLES "Create examples for the project." False)

option(BUILD_TESTS "Create the unit tests for the project." ON)

# Add libraries to project
add_subdirectory(lib)
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/lib")

# Add source, tests and examples
add_subdirectory(src)
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/src")
if(BUILD_TESTS)
add_subdirectory(tests)
endif()
if(BUILD_EXAMPLES)
add_subdirectory(examples)
include(CTest)
enable_testing()
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/tests")
endif()
2 changes: 1 addition & 1 deletion lib/logger.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ include(FetchContent)
FetchContent_Declare(
Logger
GIT_REPOSITORY https://github.com/OliverBenz/Logger.git
GIT_TAG 955d8c4f97b837af25c5da4ae28cb8ef1170e2ce
GIT_TAG 8e8f8e4a61c13ae370b5295775f92b14920bbc1a
)
set(LOGGER_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(LOGGER_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
Expand Down
2 changes: 1 addition & 1 deletion scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
echo "Entering Development Environment"
echo "Using configuration: $configuration"
nix develop .. --command bash -c "
cmake -S .. -B ../build -DCMAKE_BUILD_TYPE=$configuration
cmake -S .. -B ../build -DCMAKE_BUILD_TYPE=$configuration -DBUILD_TESTS=ON
cmake --build ../build -j
"
40 changes: 40 additions & 0 deletions src/App/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
set(targetName App)

# Get files to build
set(headers
"${CMAKE_CURRENT_LIST_DIR}/include/app/sessionManager.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/app/IAppSignalListener.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/app/eventHub.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/app/position.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/app/gameServer.hpp"
"${CMAKE_CURRENT_LIST_DIR}/Logging.hpp"
)

set(sources
"${CMAKE_CURRENT_LIST_DIR}/sessionManager.cpp"
"${CMAKE_CURRENT_LIST_DIR}/eventHub.cpp"
"${CMAKE_CURRENT_LIST_DIR}/position.cpp"
"${CMAKE_CURRENT_LIST_DIR}/gameServer.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Logging.cpp"
)

add_library(${targetName} STATIC ${headers} ${sources})
add_library(go::app ALIAS ${targetName})

target_include_directories(${targetName}
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/include"
)

# TODO: GameNet should be private.
target_link_libraries(${targetName}
PRIVATE
Logger::Logger
PUBLIC
go::core go::gameNet
)

# Setup project settings
set_project_warnings(${targetName})
set_compile_options(${targetName})
set_output_directory(${targetName})
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
16 changes: 8 additions & 8 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libData/) # Library: Core data layer
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libCore/) # Library: Core game logic
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libNetwork/) # Library: Network layer networking
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libGameNet/) # Library: Application layer networking
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libCamera/) # Library: Physical board detection
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libApp/) # Library: Application logic
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Data/") # Library: Core data layer
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Core/") # Library: Core game logic
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Network/") # Library: Network layer networking
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/GameNet/") # Library: Application layer networking
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Camera/") # Library: Physical board detection
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/App/") # Library: Application logic

add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/gui/) # Application: GUI
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/server/) # Application: Server
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/gui/") # Application: GUI
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/server/") # Application: Server
File renamed without changes.
File renamed without changes.
10 changes: 3 additions & 7 deletions src/libCamera/CMakeLists.txt → src/Camera/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
# Settings
set(targetName libCamera)
set(targetName Camera)

find_package(OpenCV REQUIRED)

# Get files to build
set(headers )
set(sources ${CMAKE_CURRENT_LIST_DIR}/main.cpp)
set(sources "${CMAKE_CURRENT_LIST_DIR}/main.cpp")

# TODO: This core/ will be a library. Not the executable.
# Create target
add_executable(${targetName}
${headers}
${sources}
)
add_executable(${targetName} ${headers}${sources})

target_include_directories(${targetName} PRIVATE ${OpenCV_INCLUDE_DIRS})
target_link_libraries(${targetName} PRIVATE ${OpenCV_LIBS})
Expand Down
File renamed without changes.
45 changes: 45 additions & 0 deletions src/Core/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
set(targetName Core)

# Get files to build
set(headers
"${CMAKE_CURRENT_LIST_DIR}/include/core/game.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/position.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/gameEvent.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/IGameStateListener.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/IGameSignalListener.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/SafeQueue.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/sgfHandler.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/moveChecker.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/core/eventHub.hpp"
"${CMAKE_CURRENT_LIST_DIR}/zobristHash.hpp"
)
set(sources
"${CMAKE_CURRENT_LIST_DIR}/position.cpp"
"${CMAKE_CURRENT_LIST_DIR}/game.cpp"
"${CMAKE_CURRENT_LIST_DIR}/sgfHandler.cpp"
"${CMAKE_CURRENT_LIST_DIR}/moveChecker.cpp"
"${CMAKE_CURRENT_LIST_DIR}/eventHub.cpp"
)

# Create target
add_library(${targetName} STATIC ${headers} ${sources})
add_library(go::core ALIAS ${targetName})

target_include_directories(${targetName}
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/include"
)
target_link_libraries(${targetName}
PUBLIC
go::data
)

# Setup project settings
set_project_warnings(${targetName}) # Which warnings to enable
set_compile_options(${targetName}) # Which extra compiler flags to enable
set_output_directory(${targetName}) # Set the output directory of the library

# Specify version
target_compile_definitions(${targetName} PUBLIC VERSION_MAJOR=0)
target_compile_definitions(${targetName} PUBLIC VERSION_MINOR=0)
target_compile_definitions(${targetName} PUBLIC VERSION_PATCH=1)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
15 changes: 7 additions & 8 deletions src/libData/CMakeLists.txt → src/Data/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
# Settings
set(targetName libData)
set(targetName Data)

# Get files to build
set(headers
${CMAKE_CURRENT_LIST_DIR}/include/data/player.hpp
${CMAKE_CURRENT_LIST_DIR}/include/data/coordinate.hpp
${CMAKE_CURRENT_LIST_DIR}/include/data/board.hpp
${CMAKE_CURRENT_LIST_DIR}/include/data/gameStatus.hpp
"${CMAKE_CURRENT_LIST_DIR}/include/data/player.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/data/coordinate.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/data/board.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/data/gameStatus.hpp"
)
set(sources
${CMAKE_CURRENT_LIST_DIR}/board.cpp
"${CMAKE_CURRENT_LIST_DIR}/board.cpp"
)

# Create target
Expand All @@ -18,7 +17,7 @@ add_library(go::data ALIAS ${targetName})

target_include_directories(${targetName}
PUBLIC
${CMAKE_CURRENT_LIST_DIR}/include
"${CMAKE_CURRENT_LIST_DIR}/include"
)

# Setup project settings
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
40 changes: 40 additions & 0 deletions src/GameNet/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
set(targetName GameNet)

# Get files to build
set(headers
"${CMAKE_CURRENT_LIST_DIR}/include/gameNet/client.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/gameNet/server.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/gameNet/nwEvents.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/gameNet/types.hpp"
"${CMAKE_CURRENT_LIST_DIR}/sessionManager.hpp"
"${CMAKE_CURRENT_LIST_DIR}/serverEvents.hpp"
)

set(sources
"${CMAKE_CURRENT_LIST_DIR}/client.cpp"
"${CMAKE_CURRENT_LIST_DIR}/server.cpp"
"${CMAKE_CURRENT_LIST_DIR}/nwEvents.cpp"
"${CMAKE_CURRENT_LIST_DIR}/sessionManager.cpp"
)


add_library(${targetName} STATIC ${headers} ${sources})
add_library(go::gameNet ALIAS ${targetName})

target_include_directories(${targetName}
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/include"
)

target_link_libraries(${targetName}
PUBLIC
go::data
PRIVATE
go::network
nlohmann_json::nlohmann_json
)

# Setup project settings
set_project_warnings(${targetName})
set_compile_options(${targetName})
set_output_directory(${targetName})
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
34 changes: 34 additions & 0 deletions src/Network/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
set(targetName Network)

# Get files to build
set(headers
"${CMAKE_CURRENT_LIST_DIR}/include/network/protocol.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/network/tcpServer.hpp"
"${CMAKE_CURRENT_LIST_DIR}/include/network/tcpClient.hpp"
"${CMAKE_CURRENT_LIST_DIR}/connection.hpp"
)

set(sources
"${CMAKE_CURRENT_LIST_DIR}/tcpServer.cpp"
"${CMAKE_CURRENT_LIST_DIR}/tcpClient.cpp"
"${CMAKE_CURRENT_LIST_DIR}/connection.cpp"
)


add_library(${targetName} STATIC ${headers} ${sources})
add_library(go::network ALIAS ${targetName})

target_include_directories(${targetName}
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/include"
)

target_link_libraries(${targetName}
PRIVATE
asio
)

# Setup project settings
set_project_warnings(${targetName})
set_compile_options(${targetName})
set_output_directory(${targetName})
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
17 changes: 8 additions & 9 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# Settings
set(targetName goUi)

find_package(Qt6 REQUIRED COMPONENTS Widgets)

add_executable(${targetName}
${CMAKE_CURRENT_LIST_DIR}/main.cpp
${CMAKE_CURRENT_LIST_DIR}/MainWindow.cpp
${CMAKE_CURRENT_LIST_DIR}/GameWidget.cpp
${CMAKE_CURRENT_LIST_DIR}/BoardWidget.cpp
${CMAKE_CURRENT_LIST_DIR}/boardRenderer.cpp
${CMAKE_CURRENT_LIST_DIR}/ConnectDialog.cpp
${CMAKE_CURRENT_LIST_DIR}/HostDialog.cpp
${CMAKE_CURRENT_LIST_DIR}/Logging.cpp
"${CMAKE_CURRENT_LIST_DIR}/main.cpp"
"${CMAKE_CURRENT_LIST_DIR}/MainWindow.cpp"
"${CMAKE_CURRENT_LIST_DIR}/GameWidget.cpp"
"${CMAKE_CURRENT_LIST_DIR}/BoardWidget.cpp"
"${CMAKE_CURRENT_LIST_DIR}/boardRenderer.cpp"
"${CMAKE_CURRENT_LIST_DIR}/ConnectDialog.cpp"
"${CMAKE_CURRENT_LIST_DIR}/HostDialog.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Logging.cpp"
)

target_link_libraries(${targetName}
Expand Down
Loading