diff --git a/recipes/json_struct/all/conandata.yml b/recipes/json_struct/all/conandata.yml new file mode 100644 index 0000000000000..31102ff6a0fa4 --- /dev/null +++ b/recipes/json_struct/all/conandata.yml @@ -0,0 +1,4 @@ +sources: + "1.0.2": + url: "https://github.com/jorgen/json_struct/archive/refs/tags/1.0.2.tar.gz" + sha256: "c424ae3e8dbe6846311cb878d2d400c98a297a28eb1556961a985b6ed7b16090" diff --git a/recipes/json_struct/all/conanfile.py b/recipes/json_struct/all/conanfile.py new file mode 100644 index 0000000000000..459d40f51055e --- /dev/null +++ b/recipes/json_struct/all/conanfile.py @@ -0,0 +1,50 @@ +from conan import ConanFile +from conan.tools.files import get, copy +from conan.tools.layout import basic_layout +import os + +required_conan_version = ">=1.52.0" + +class JsonStructConan(ConanFile): + name = "json_struct" + description = "json_struct is a single header only C++ library for parsing JSON directly to C++ structs and vice versa" + license = "MIT" + url = "https://github.com/conan-io/conan-center-index" + homepage = "https://github.com/jorgen/json_struct" + + topics = ("serialization", "deserialization", "reflection", "json") + + settings = "os", "compiler", "build_type", "arch" + package_type = "header-library" + no_copy_source = True + + @property + def _min_cppstd(self): + return 14 + + @property + def _compilers_minimum_version(self): + return { + "apple-clang": "10", + "clang": "7", + "gcc": "7", + "msvc": "191", + "Visual Studio": "15", + } + + + def layout(self): + basic_layout(self) + + # Copy all files to the package folder + def package(self): + copy(self, "COPYING", self.source_folder, os.path.join(self.package_folder, "licenses")) + copy( + self, + "*.h", + os.path.join(self.source_folder, "include"), + os.path.join(self.package_folder, "include"), + ) + + def source(self): + get(self, **self.conan_data["sources"][self.version], strip_root=True) diff --git a/recipes/json_struct/all/test_package/CMakeLists.txt b/recipes/json_struct/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..889a2933058e6 --- /dev/null +++ b/recipes/json_struct/all/test_package/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.15) + +project(JsonStructTester + DESCRIPTION "Tester package for json_struct" + LANGUAGES C CXX) + +find_package(json_struct REQUIRED) + +add_executable(${PROJECT_NAME} main.cpp) + +target_link_libraries(${PROJECT_NAME} json_struct::json_struct) diff --git a/recipes/json_struct/all/test_package/conanfile.py b/recipes/json_struct/all/test_package/conanfile.py new file mode 100644 index 0000000000000..f0d4e6b76d579 --- /dev/null +++ b/recipes/json_struct/all/test_package/conanfile.py @@ -0,0 +1,28 @@ +import os + +from conan import ConanFile +from conan.tools.cmake import CMake, cmake_layout +from conan.tools.build import can_run + + +class JsonStructTest(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "CMakeDeps", "CMakeToolchain" + + def requirements(self): + self.requires(self.tested_reference_str) + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def layout(self): + cmake_layout(self) + + def test(self): + if can_run(self): + self.output.info("Checking compiled tester...") + cmd = os.path.join(self.cpp.build.bindir, "JsonStructTester") + self.run(cmd, env="conanrun") + diff --git a/recipes/json_struct/all/test_package/main.cpp b/recipes/json_struct/all/test_package/main.cpp new file mode 100644 index 0000000000000..a61797c693d60 --- /dev/null +++ b/recipes/json_struct/all/test_package/main.cpp @@ -0,0 +1,21 @@ +#include "json_struct/json_struct.h" +#include + +struct MyTestStruct +{ + std::string name; + unsigned age; + JS_OBJ(name, age); +}; + +int main() +{ + MyTestStruct person; + person.name="Jonh"; + person.age=23; + + std::string person_json = JS::serializeStruct(person); + std::cout << person_json << std::endl; + + return 0; +} diff --git a/recipes/json_struct/config.yml b/recipes/json_struct/config.yml new file mode 100644 index 0000000000000..8457ca9a4a8cd --- /dev/null +++ b/recipes/json_struct/config.yml @@ -0,0 +1,3 @@ +versions: + "1.0.2": + folder: all