Fix conanfile.py, add example usage conan project
All checks were successful
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 2s
Run UnitTests / build-and-run-unittests (push) Successful in 57s

This commit is contained in:
Stephen Seo 2024-07-15 17:24:07 +09:00
parent c3dee0f242
commit e71ad71097
5 changed files with 82 additions and 0 deletions

View file

@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.7)
project(ECMS_Conan_Example)
set(ECMS_Conan_Example_SOURCES
src/main.cpp
)
add_compile_options(
-Wall -Wextra -Wpedantic -Wno-missing-braces
$<$<COMPILE_LANGUAGE:CXX>:-Weffc++>
$<$<CONFIG:DEBUG>:-Og>
)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Debug', none was specified.")
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release")
endif()
find_package(ecms CONFIG REQUIRED)
add_executable(ECMS_Conan_Example ${ECMS_Conan_Example_SOURCES})
target_link_libraries(ECMS_Conan_Example ecms::ecms)

View file

@ -0,0 +1,6 @@
[requires]
ecms/1.0
[generators]
CMakeDeps
CMakeToolchain

View file

@ -0,0 +1,17 @@
#!/usr/bin/env bash
cd "$(dirname "$0")"
set -ve
if ! [[ -e "${HOME}/.conan2/profiles/default" ]]; then
conan profile detect
fi
if ! grep stephens_forgejo "${HOME}/.conan2/remotes.json" >&/dev/null; then
conan remote add stephens_forgejo "https://git.seodisparate.com/api/packages/stephenseo/conan"
fi
conan install . -r stephens_forgejo --output-folder=buildConan
cmake -S . -B buildConan -DCMAKE_TOOLCHAIN_FILE=buildConan/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build buildConan

View file

@ -0,0 +1,35 @@
#include <EC/Manager.hpp>
#include <iostream>
struct CPosition {
CPosition(float x = 0.0F, float y = 0.0F) : x(x), y(y) {}
float x, y;
};
using EmptyTypeList = EC::Meta::TypeList<>;
using ComponentsTypeList = EC::Meta::TypeList<CPosition>;
int main() {
auto manager = EC::Manager<ComponentsTypeList, EmptyTypeList>{};
auto entity_id = manager.addEntity();
manager.addComponent<CPosition>(entity_id, 1.0F, 2.0F);
manager.forMatchingSignature<ComponentsTypeList>(
[] (std::size_t, void *, CPosition *pos)
{
if (pos->x != 1.0F) {
std::clog << "WARNING: pos->x is not 1.0F! (" << pos->x
<< ")\n";
}
if (pos->y != 2.0F) {
std::clog << "WARNING: pos->x is not 2.0F! (" << pos->y
<< ")\n";
}
},
nullptr,
false);
return 0;
}

View file

@ -18,3 +18,4 @@ class ECMSConan(ConanFile):
# so it's recommended to set those as empty. # so it's recommended to set those as empty.
self.cpp_info.bindirs = [] self.cpp_info.bindirs = []
self.cpp_info.libdirs = [] self.cpp_info.libdirs = []
self.cpp_info.includedirs = ['src']