From ad0fa169ef1801510fbf4aafb58db28d4868ae36 Mon Sep 17 00:00:00 2001 From: youmetme <321640253@qq.com> Date: Mon, 12 Aug 2024 18:06:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0conan=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 12 ++++------ conanfile.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 conanfile.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d70c16..904cd5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required( VERSION 3.28) project(Logging) - aux_source_directory(${CMAKE_SOURCE_DIR}/src SRC) set(LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib) @@ -11,11 +10,10 @@ set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) include_directories(${CMAKE_SOURCE_DIR}/include) -# add_library(${PROJECT_NAME} ${SRC}) -# add_library(${PROJECT_NAME} SHARED ${SRC}) - - -add_executable(${PROJECT_NAME}main main.c ${SRC}) - +if (SHARED) + add_library(${PROJECT_NAME} SHARED ${SRC}) +else() + add_library(${PROJECT_NAME} ${SRC}) +endif() diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..e9c5c50 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,64 @@ +from conan import ConanFile +from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps, cmake_layout +from conan.tools.files import copy, get +from conan.tools.build import check_min_cppstd +from conan import tools +import os + + + +class loggingRecipe(ConanFile): + name = "logging" + version = "0.1.0" + license = "MIT" + author = "321640253@qq.com" + url = "https://github.com/yourusername/logging" + description = "一个纯C的简单易用的日志库" + topics = ("logging", "C", "simple", "easy-to-use", "log","Logging") + + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = {"shared": False, "fPIC": True} + + + exports_sources = "include/*", "CMakeLists.txt", "src/*" + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def configure(self): + if self.options.shared: + self.options.rm_safe("fPIC") + + + + def layout(self): + cmake_layout(self) + + def generate(self): + deps = CMakeDeps(self) + deps.generate() + tc = CMakeToolchain(self) + if self.options.shared: + tc.variables["SHARED"] = True + else: + tc.variables["SHARED"] = False + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses")) + copy(self, pattern="*.h", src=os.path.join(self.source_folder, "include"), dst=os.path.join(self.package_folder, "include")) + copy(self, pattern="*.a", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False) + copy(self, pattern="*.so", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False) + copy(self, pattern="*.lib", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False) + copy(self, pattern="*.dll", src=self.build_folder, dst=os.path.join(self.package_folder, "bin"), keep_path=False) + copy(self, pattern="*.dylib", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False) + + def package_info(self): + self.cpp_info.libs = ["Logging"] \ No newline at end of file