]> git.seodisparate.com - EntityComponentMetaSystem/commitdiff
Fix conanfile.py, add example usage conan project
authorStephen Seo <seo.disparate@gmail.com>
Mon, 15 Jul 2024 08:24:07 +0000 (17:24 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 15 Jul 2024 08:24:07 +0000 (17:24 +0900)
conan_usage_example/CMakeLists.txt [new file with mode: 0644]
conan_usage_example/conanfile.txt [new file with mode: 0644]
conan_usage_example/setup_build_with_conan.sh [new file with mode: 0755]
conan_usage_example/src/main.cpp [new file with mode: 0644]
conanfile.py

diff --git a/conan_usage_example/CMakeLists.txt b/conan_usage_example/CMakeLists.txt
new file mode 100644 (file)
index 0000000..21b55a8
--- /dev/null
@@ -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)
diff --git a/conan_usage_example/conanfile.txt b/conan_usage_example/conanfile.txt
new file mode 100644 (file)
index 0000000..a434e29
--- /dev/null
@@ -0,0 +1,6 @@
+[requires]
+ecms/1.0
+
+[generators]
+CMakeDeps
+CMakeToolchain
diff --git a/conan_usage_example/setup_build_with_conan.sh b/conan_usage_example/setup_build_with_conan.sh
new file mode 100755 (executable)
index 0000000..be2c725
--- /dev/null
@@ -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
diff --git a/conan_usage_example/src/main.cpp b/conan_usage_example/src/main.cpp
new file mode 100644 (file)
index 0000000..dc6a8d5
--- /dev/null
@@ -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;
+}
index bda3e1e1446e1067b4284b8ae7107f376c3aa393..b346bae7251580103cee6d89376e6f9aec55a24a 100644 (file)
@@ -18,3 +18,4 @@ class ECMSConan(ConanFile):
         # so it's recommended to set those as empty.
         self.cpp_info.bindirs = []
         self.cpp_info.libdirs = []
+        self.cpp_info.includedirs = ['src']