CPM added and directory structure changed

Switch to using CPM package manager instead of vcpkg as its just a wrapper around cmake and makes things more simple.

Switch dependency from spdlog to fmt.

Changed the directory structure to match the setup recommended by GitLab
This commit is contained in:
McMassiveNZ
2023-05-28 20:42:15 +02:00
parent ea2f1c08b7
commit 0e7f06cdd2
14 changed files with 61 additions and 55 deletions

View File

@@ -18,46 +18,38 @@ jobs:
os: [windows-latest, ubuntu-latest, macos-latest]
build_configuration: [Debug, Release]
compiler: [llvm, gcc]
vcpkg_bootstrap: [bootstrap-vcpkg.sh]
exclude:
- os: windows-latest
vcpkg_bootstrap: bootstrap-vcpkg.sh
include:
- os: 'windows-latest'
triplet: x64-windows
vcpkg_bootstrap: bootstrap-vcpkg.bat
compiler: llvm
build_configuration: Debug
- os: 'windows-latest'
triplet: x64-windows
vcpkg_bootstrap: bootstrap-vcpkg.bat
compiler: llvm
build_configuration: Release
- os: 'windows-latest'
triplet: x64-windows
vcpkg_bootstrap: bootstrap-vcpkg.bat
compiler: gcc
build_configuration: Debug
- os: 'windows-latest'
triplet: x64-windows
vcpkg_bootstrap: bootstrap-vcpkg.bat
compiler: gcc
build_configuration: Release
- os: 'windows-latest'
triplet: x64-windows
vcpkg_bootstrap: bootstrap-vcpkg.bat
compiler: msvc
build_configuration: Debug
- os: 'windows-latest'
triplet: x64-windows
vcpkg_bootstrap: bootstrap-vcpkg.bat
compiler: msvc
build_configuration: Release
@@ -75,17 +67,8 @@ jobs:
- name: cache
uses: actions/cache@v3
with:
path: |
~/vcpkg
./build/vcpkg_installed
${{ env.HOME }}/.cache/vcpkg/archives
${{ env.XDG_CACHE_HOME }}/vcpkg/archives
${{ env.LOCALAPPDATA }}\vcpkg\archives
${{ env.APPDATA }}\vcpkg\archives
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.build_configuration }}-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('./vcpkg.json')}}
restore-keys: |
${{ runner.os }}-${{ matrix.build_configuration }}-
path: "**/cpm_modules"
key: ${{ github.workflow }}-cpm-modules-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
- name: setup dependencies
uses: aminya/setup-cpp@v1
@@ -93,20 +76,12 @@ jobs:
compiler: ${{ matrix.compiler }}
vcvarsall: ${{ contains(matrix.os, 'windows')}}
cmake: true
vcpkg: true
ccache: true
clangtidy: ${{ env.CLANG_TIDY_VERSION }}
cppcheck: true
- name: Boostrap Vcpkg
run: ${{github.workspace}}/external/vcpkg/${{matrix.vcpkg_bootstrap}} -disableMetrics
- name: Install packaged dependencies
run: ${{github.workspace}}/external/vcpkg/vcpkg install spdlog --triplet ${{matrix.triplet}}
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_configuration}}
-DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/external/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_configuration}}

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "external/vcpkg"]
path = external/vcpkg
url = https://github.com/Microsoft/vcpkg.git

View File

@@ -13,11 +13,12 @@ OPTION(ENABLE_WARNINGS_AS_ERRORS "Warnings are treated as Errors" ON)
OPTION(ENABLE_STATIC_ANALYSIS "Enable Static Analysis Tools" ON)
OPTION(ENABLE_SANITIZERS "Enable Sanitizer Tools" ON)
set(CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_LIST_DIR}/scripts/cmake)
set(CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake)
include(${CMAKE_SCRIPTS_DIR}/compilerwarnings.cmake)
include(${CMAKE_SCRIPTS_DIR}/sanitizers.cmake)
include(${CMAKE_SCRIPTS_DIR}/staticanalysis.cmake)
include(${CMAKE_SCRIPTS_DIR}/cpm.cmake)
if (ENABLE_TESTS)
message("-- Unit Testing Enabled")

33
cmake/cpm.cmake Normal file
View File

@@ -0,0 +1,33 @@
set(CPM_DOWNLOAD_VERSION 0.38.1)
if(CPM_SOURCE_CACHE)
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
else()
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
endif()
# Expand relative path. This is important if the provided path contains a tilde (~)
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
function(download_cpm)
message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}")
file(DOWNLOAD
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
${CPM_DOWNLOAD_LOCATION}
)
endfunction()
if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
download_cpm()
else()
# resume download if it previously failed
file(READ ${CPM_DOWNLOAD_LOCATION} check)
if("${check}" STREQUAL "")
download_cpm()
endif()
unset(check)
endif()
include(${CPM_DOWNLOAD_LOCATION})

18
cmake/googletest.cmake Normal file
View File

@@ -0,0 +1,18 @@
include_guard()
CPMAddPackage(
NAME googletest
GITHUB_REPOSITORY google/googletest
GIT_TAG release-1.13.0
VERSION 1.13.0
OPTIONS
"INSTALL_GTEST OFF"
"gtest_force_shared_crt ON"
)
set_property(TARGET
gtest
gtest_main
gmock
gmock_main
PROPERTY FOLDER third_party/GoogleTest)

1
external/vcpkg vendored

Submodule external/vcpkg deleted from af031ae388

View File

@@ -1,18 +0,0 @@
include_guard()
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG 58d77fa8070e8cec2dc1ed015d66b454c8d78850 # release-1.12.1
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
set_property(TARGET
gtest
gtest_main
gmock
gmock_main
PROPERTY FOLDER GoogleTest)

View File

@@ -5,8 +5,9 @@ add_executable(
main.cpp
)
find_package(spdlog CONFIG REQUIRED)
target_link_libraries(${current_target} PRIVATE spdlog::spdlog spdlog::spdlog_header_only)
CPMAddPackage("gh:fmtlib/fmt#10.0.0")
target_link_libraries(${current_target} PRIVATE fmt::fmt)
set_property(TARGET fmt PROPERTY FOLDER third_party/fmt)
if( ENABLE_ALL_REASONABLE_WARNINGS )
MESSAGE("-- Additional Warnings Enabled")

View File

@@ -1,8 +1,8 @@
#include <spdlog/spdlog.h>
#include <fmt/core.h>
auto main() -> int
{
spdlog::trace("Hello, World!");
fmt::print("Hello, World!");
return 0;
}