Skip to content
Draft
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
38 changes: 25 additions & 13 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,45 @@ env:

jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
config:
# - os: ubuntu-latest
# vcpkg_triplet: x64-linux-release
- os: ubuntu-latest
vcpkg_triplet: x64-linux
# - os: windows-latest
# vcpkg_triplet: x64-windows-release
- os: windows-latest
vcpkg_triplet: x64-windows

runs-on: ${{ matrix.config.os }}

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
submodules: recursive

- name: Install libs
run: sudo apt install -y libflac-dev libfreetype6-dev libgl1-mesa-dev libopenal-dev libudev-dev libvorbis-dev libx11-dev libxcursor-dev libxi-dev libxrandr-dev
if: ${{ matrix.config.os == 'ubuntu-latest' }}

- name: vcpkg
uses: johnwason/vcpkg-action@v4
with:
pkgs: sfml gtest glog
triplet: ${{ matrix.config.vcpkg_triplet }}
cache-key: ${{ matrix.config.os }}
token: ${{ github.token }}

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=${{ matrix.config.vcpkg_triplet }}

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Test
working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}

6 changes: 0 additions & 6 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +0,0 @@
[submodule "glog"]
path = glog
url = https://github.com/google/glog.git
[submodule "googletest"]
path = googletest
url = https://github.com/google/googletest.git
77 changes: 59 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,28 +1,69 @@
cmake_minimum_required(VERSION 3.10.2)

if(WIN32 AND DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "")
endif()
################################################################################
# vcpkg
################################################################################
include (${CMAKE_SOURCE_DIR}/cmake/vcpkg.cmake)

################################################################################
# Project
################################################################################
project(SolitaireGame VERSION 0.1.0)

set(BUILD_SHARED_LIBS OFF)
option(BUILD_TESTING OFF)
option(WITH_GFLAGS OFF)
add_compile_options(-DHAVE_SNPRINTF)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
if (MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif()
set(CMAKE_CXX_STANDARD 11)

add_subdirectory(glog)
include_directories(glog)
################################################################################
# External libraries
################################################################################
find_package(glog CONFIG REQUIRED)
find_package(GTest CONFIG REQUIRED)
find_package(SFML COMPONENTS system window graphics CONFIG REQUIRED)

enable_testing()
add_subdirectory(googletest)
################################################################################
# Sources
################################################################################
set(coregame_dir src/CoreGame/)
set(engine_dir src/Engine/)
set(utils_dir src/Utils/)

add_subdirectory(src)
file(GLOB_RECURSE common_sources ${engine_dir}*.cpp ${utils_dir}*.cpp ${coregame_dir}*.cpp)
file(GLOB_RECURSE common_headers ${engine_dir}*.h ${utils_dir}*.h ${coregame_dir}*.h)
file(GLOB_RECURSE src_sources src/*.cpp)
file(GLOB_RECURSE src_headers src/*.h)

set(sources ${src_sources} ${src_headers} ${common_sources} ${common_headers})

################################################################################
# Executable
################################################################################
add_executable(${PROJECT_NAME} ${sources})

target_link_libraries(${PROJECT_NAME} PRIVATE
glog::glog
GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main
sfml-system sfml-graphics sfml-window
)

################################################################################
# Resources
################################################################################
include (${CMAKE_SOURCE_DIR}/cmake/copy_res.cmake)
################################################################################
# - Blueprints
################################################################################

set(BLUEPRINTS_DIR Blueprints)
# file(GLOB blueprints ${BLUEPRINTS_DIR}/*.*)
CopyResources(${BLUEPRINTS_DIR}/*.* $<TARGET_FILE_DIR:${PROJECT_NAME}>)

################################################################################
# - Fonts
################################################################################
set(FONT_DIR Font)
# file(GLOB fonts ${FONT_DIR}/*.*)
CopyResources(${FONT_DIR}/*.* $<TARGET_FILE_DIR:${PROJECT_NAME}>)

################################################################################
# SubProjects
################################################################################
add_subdirectory(SolitaireTest)
66 changes: 26 additions & 40 deletions SolitaireTest/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,22 @@
cmake_minimum_required(VERSION 3.10.2)

################################################################################
# Project
################################################################################
project(SolitaireTest)

if (MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif()
set(CMAKE_CXX_STANDARD 11)

find_library(GTEST_LIB gtestd ${CMAKE_BINARY_DIR}/lib/Debug)

if(GTEST_LIB)
message("Gtest library found")
else()
message("Gtest library not found")
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
endif()

message("CMAKE_BINARY_DIR = " ${CMAKE_BINARY_DIR})
include_directories("${CMAKE_BINARY_DIR}/googletest")

if (CMAKE_VERSION VERSION_LESS 2.8.11)

include_directories("${gtest_SOURCE_DIR}/include"
"${gmock_SOURCE_DIR}/include")

message(gtest_SOURCE_DIR ${gtest_SOURCE_DIR})
message(gmock_SOURCE_DIR ${gmock_SOURCE_DIR})

endif()
################################################################################
# External libraries
################################################################################
find_package(glog CONFIG REQUIRED)
find_package(GTest CONFIG REQUIRED)
find_package(SFML COMPONENTS system window graphics CONFIG REQUIRED)

################################################################################
# Sources
################################################################################
set(engine_dir_test ../src/Engine/)
set(utils_dir_test ../src/Utils/)

Expand All @@ -45,20 +33,18 @@ set(sources_test
${common_headers_test}
)

find_package(
SFML 2.5
COMPONENTS system window graphics
REQUIRED)


find_library(GLOG_LIB glogd ${CMAKE_BINARY_DIR}/glog/Debug)
if(GLOG_LIB)
message ("GLOG_TEST FOUND!!!")
else()
message ("GLOG_TEST NOT FOUND!!!")
endif()

################################################################################
# Executable
################################################################################
add_executable(testmain ${sources_test})
target_link_libraries(testmain gtest gmock_main gtest_main glog sfml-system sfml-window
sfml-graphics)
target_link_libraries(testmain PRIVATE
glog::glog
GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main
sfml-system sfml-graphics sfml-window
)

################################################################################
# Tests
################################################################################
enable_testing()
add_test(NAME testmain COMMAND testmain)
15 changes: 15 additions & 0 deletions cmake/copy_res.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
################################################################################
# CopyResources
################################################################################
function(CopyResources src_dir dest_dir)
file(GLOB files ${src_dir})

foreach(item IN LISTS files)
get_filename_component(dest_filename ${item} NAME)

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${item}
${dest_dir}/${dest_filename}
)
endforeach()
endfunction()
7 changes: 7 additions & 0 deletions cmake/vcpkg.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
################################################################################
# vcpkg
################################################################################
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "")
endif()
1 change: 0 additions & 1 deletion glog
Submodule glog deleted from 6e46c1
1 change: 0 additions & 1 deletion googletest
Submodule googletest deleted from 4ec4cd
61 changes: 0 additions & 61 deletions src/CMakeLists.txt

This file was deleted.