from conans import ConanFile, CMake, tools class MariadbConnectorCConan(ConanFile): name = "mariadb-connector-cpp" version = "1.0.2" license = "LGLP" author = "Axel Sjoberg sjobeaxe@gmail.com" url = "https://mariadb.com/downloads/connectors/" description = "MariaDB Connector C++" settings = "os", "compiler", "build_type", "arch" options = {"shared": [True, False], "fPIC": [True, False]} default_options = {"shared": False, "fPIC": True} generators = "cmake" requires = "mariadb-connector-c/3.3.2" def config_options(self): if self.settings.os == "Windows": del self.options.fPIC def source(self): # The CMake of mariadb-connector-cpp (their build system) requies that the dependency mariadb-connector-c source files are put # inside a folder in the mariadb-connector-cpp source files folder. I.e. It does not understand this: requires = "mariadb-connector-c/3.3.2" # Therefore we must manully copy the connector-c 3.3.2 source code into mariadb-connector-cpp-1.0.2-src/libmariadb tools.get("https://dlm.mariadb.com/2531509/Connectors/cpp/connector-cpp-1.0.2/mariadb-connector-cpp-1.0.2-src.zip", sha256="a56951441d20a8ce0839a25de8450e245659c1d743e1024fb778e985e5988f7c") # This small hack might be useful to guarantee proper /MT /MD linkage # in MSVC if the packaged project doesn't have variables to set it # properly tools.replace_in_file("mariadb-connector-cpp-1.0.2-src/CMakeLists.txt", " LANGUAGES CXX C)", ''' LANGUAGES CXX C) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup()''') def build(self): cmake = CMake(self) cmake.definitions["WITH_MSI"] = "OFF" #cmake.definitions["WITH_UNIT_TESTS"] = "OFF" cmake.configure(source_folder="mariadb-connector-cpp-1.0.2-src") cmake.build() def package(self): self.copy("*.hpp", dst="include", src="mariadb-connector-cpp-1.0.2-src\include") self.copy("*mariadbcpp.lib", "lib", "", keep_path=False) self.copy("*mariadbcpp.dll", "bin", "", keep_path=False) def package_info(self): self.cpp_info.libs = ["mariadbcpp"]