Switch from CPM to VCPKG

This commit is contained in:
2024-12-07 19:30:17 +01:00
parent e4378dcddc
commit 997e45d8af
9 changed files with 89 additions and 1302 deletions

View File

@@ -11,18 +11,12 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_package(EnTT CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
if(PROJECT_IS_TOP_LEVEL) find_package(nlohmann_json CONFIG REQUIRED)
include(cmake/CPM.cmake) find_package(glfw3 REQUIRED)
find_package(spdlog REQUIRED)
CPMAddPackage(NAME EnTT URL "https://github.com/skypjack/entt/releases/download/v3.13.2/entt-v3.13.2.tar.gz") find_package(fx-gltf REQUIRED)
CPMAddPackage(NAME nlohmann_json URL "https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz")
CPMAddPackage(NAME glfw3 URL "https://github.com/glfw/glfw/releases/download/3.4/glfw-3.4.zip" OPTIONS "GLFW_BUILD_DOCS OFF" "GLFW_INSTALL OFF")
CPMAddPackage(NAME fx-gltf URL "https://github.com/jessey-git/fx-gltf/archive/refs/tags/v2.0.0.tar.gz" OPTIONS "FX_GLTF_BUILD_TESTS OFF" "FX_GLTF_INSTALL OFF")
CPMAddPackage(NAME glm URL "https://github.com/g-truc/glm/archive/refs/tags/1.0.1.tar.gz")
CPMAddPackage(NAME spdlog URL "https://github.com/gabime/spdlog/archive/refs/tags/v1.14.1.tar.gz")
endif()
add_subdirectory(${PROJECT_SOURCE_DIR}/lib) add_subdirectory(${PROJECT_SOURCE_DIR}/lib)
add_subdirectory(${PROJECT_SOURCE_DIR}/src) add_subdirectory(${PROJECT_SOURCE_DIR}/src)

View File

@@ -1,8 +1,8 @@
{ {
"version": 2, "version": 3,
"cmakeMinimumRequired": { "cmakeMinimumRequired": {
"major": 3, "major": 3,
"minor": 14, "minor": 24,
"patch": 0 "patch": 0
}, },
"configurePresets": [ "configurePresets": [
@@ -26,17 +26,25 @@
"CMAKE_CXX_STANDARD_REQUIRED": "ON" "CMAKE_CXX_STANDARD_REQUIRED": "ON"
} }
}, },
{
"name": "vcpkg",
"hidden": true,
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"VCPKG_INSTALL_OPTIONS": "--no-print-usage"
}
},
{ {
"name": "dev", "name": "dev",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build", "binaryDir": "${sourceDir}/build",
"inherits": [ "inherits": [
"std" "std",
"vcpkg"
], ],
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug", "CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -fdiagnostics-color=always", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"GLFW_BUILD_X11": "OFF" "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -fdiagnostics-color=always"
} }
} }
] ]

View File

@@ -1,4 +1,4 @@
CPMAddPackage(NAME argparse URL "https://github.com/p-ranav/argparse/archive/refs/tags/v3.1.tar.gz") find_package(cxxopts CONFIG)
add_executable(Fall-Fever add_executable(Fall-Fever
main.cpp main.cpp
@@ -6,4 +6,4 @@ add_executable(Fall-Fever
flycam.cpp flycam.cpp
) )
target_link_libraries(Fall-Fever PRIVATE fever_core argparse) target_link_libraries(Fall-Fever PRIVATE fever_core cxxopts::cxxopts)

View File

@@ -2,25 +2,35 @@
#include "util/log.h" #include "util/log.h"
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include <argparse/argparse.hpp> #include <cxxopts.hpp>
#include <iostream>
#include <spdlog/spdlog.h> #include <spdlog/spdlog.h>
auto main(int argc, char* argv[]) -> int auto main(int argc, char* argv[]) -> int
{ {
Log::initialize(); Log::initialize();
argparse::ArgumentParser program("Fall-Fever"); cxxopts::Options options("Fall-Fever", "A brief description");
program.add_argument("model").help("model file to load");
try { // clang-format off
program.parse_args(argc, argv); options.add_options()
} catch (std::exception const& err) { ("model", "Model file to load", cxxopts::value<std::string>())
std::cerr << err.what() << std::endl; ("h,help", "Print usage")
std::cerr << program; ;
return 1; // clang-format on
options.parse_positional({"model"});
auto result = options.parse(argc, argv);
if (result.count("help")) {
std::cout << options.help() << std::endl;
exit(0);
} }
auto model = program.get<std::string>("model"); std::string model;
if (result.count("model"))
model = result["model"].as<std::string>();
// Initialize GLFW // Initialize GLFW
if (glfwInit() == 0) { if (glfwInit() == 0) {

File diff suppressed because it is too large Load Diff

View File

@@ -24,12 +24,11 @@ target_include_directories(fever_core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries( target_link_libraries(
fever_core PUBLIC fever_core PUBLIC
glad glad
stb
glfw glfw
EnTT::EnTT EnTT::EnTT
pthread spdlog::spdlog
spdlog
glm::glm glm::glm
fx-gltf::fx-gltf fx-gltf::fx-gltf
nlohmann_json::nlohmann_json nlohmann_json::nlohmann_json
stb
) )

22
vcpkg.json Normal file
View File

@@ -0,0 +1,22 @@
{
"vcpkg-configuration": {
"overlay-ports": [
"./vcpkg"
]
},
"dependencies": [
"cxxopts",
"entt",
"fmt",
{
"name": "glfw3",
"features": [
"wayland"
]
},
"glm",
"nlohmann-json",
"spdlog",
"fx-gltf"
]
}

View File

@@ -0,0 +1,16 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO jessey-git/fx-gltf
REF v2.0.0
SHA512 0731732b5919a55045df2fe06bda6ea2a4d4d889556d738d0ade5acf39341a0748deb13bb130cbd6226146c70c2566ebfa67e6ac398157be00fefcf1f071a9bd
HEAD_REF main
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DFX_GLTF_BUILD_TESTS=OFF
)
vcpkg_install_cmake()

7
vcpkg/fx-gltf/vcpkg.json Normal file
View File

@@ -0,0 +1,7 @@
{
"name": "fx-gltf",
"version": "2.0.0",
"description": "A C++ library for loading and saving glTF 2.0 files.",
"homepage": "https://github.com/jessey-git/fx-gltf",
"dependencies": []
}