--- /dev/null
+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)
--- /dev/null
+[requires]
+ecms/1.0
+
+[generators]
+CMakeDeps
+CMakeToolchain
--- /dev/null
+#!/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
--- /dev/null
+#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;
+}
# so it's recommended to set those as empty.
self.cpp_info.bindirs = []
self.cpp_info.libdirs = []
+ self.cpp_info.includedirs = ['src']