Skip to content
Snippets Groups Projects
Commit 9f2cfa2f authored by Joscha Schmiedt's avatar Joscha Schmiedt
Browse files

WIP: towards fixing conan create

- exports_source had to be adjusted
- CMakeLists and conanfile.py of test_package is still broken
parent 526ba9ab
No related branches found
No related tags found
2 merge requests!61Release 0.3.0,!49Resolve "EXTERN: Adapt to Conan 2"
Pipeline #52700 failed
Pipeline: caosdb-cppinttest

#53521

    Pipeline: caosdb-cppinttest

    #52701

      import os
      from conan import ConanFile
      from conan.tools.cmake import CMake, cmake_layout, CMakeDeps, CMakeToolchain
      from conan.tools.files import copy
      ......@@ -28,7 +29,8 @@ class CaosdbConan(ConanFile):
      "*.h", "*.proto", "*.c", "*.cpp",
      "*.rst", "*.md",
      )
      exports_sources = "src", "doc", "include", "test", "cmake", "proto"
      exports_sources = "CMakeLists.txt", "src/*", "doc/*", "include/*", "test/*", "cmake/*", "proto/*", "*.cmake"
      def build_requirements(self):
      self.tool_requires("protobuf/3.21.12")
      ......@@ -75,15 +77,21 @@ class CaosdbConan(ConanFile):
      cmake = CMake(self)
      cmake.install()
      copy(self, pattern="*.h", dst="include", src="include")
      copy(self, pattern="*.dll", dst="bin", keep_path=False)
      copy(self, pattern="*.so", dst="lib", keep_path=False)
      copy(self, pattern="*.dylib", dst="lib", keep_path=False)
      copy(self, pattern="*.a", dst="lib", keep_path=False)
      copy(self, pattern="*.h",
      dst=os.path.join(self.package_folder, "include"),
      src=os.path.join(self.source_folder, "include"))
      copy(self, pattern="*.dll", src=os.path.join(self.build_folder, "bin"),
      dst=os.path.join(self.package_folder, "bin"), keep_path=False)
      copy(self, pattern="*.so", src=os.path.join(self.build_folder, "bin"),
      dst=os.path.join(self.package_folder, "lib"), keep_path=False)
      copy(self, pattern="*.dylib", src=os.path.join(self.build_folder, "bin"),
      dst=os.path.join(self.package_folder, "lib"), keep_path=False)
      copy(self, pattern="*.a", src=os.path.join(self.build_folder, "bin"),
      dst=os.path.join(self.package_folder, "lib"), keep_path=False)
      def package_info(self):
      self.cpp_info.libs = ["caosdb", "ccaosdb"]
      self.cpp_info.requires = ["boost::headers"]
      self.cpp_info.requires = ["boost::headers", "grpc::grpc", "protobuf::protobuf"]
      def validate(self):
      if self.settings.os not in ("Linux", "Windows"):
      ......
      ......@@ -13,6 +13,9 @@ set(test_cases
      ###################################################
      find_package(caosdb REQUIRED)
      find_package(GTest REQUIRED)
      # supress warnings during build of gtest
      cmake_policy(SET CMP0054 NEW)
      enable_testing()
      ......@@ -21,21 +24,34 @@ enable_testing()
      include(GoogleTest REQUIRED)
      # loop over all test cases and add them to the test runner
      list(LENGTH test_cases len_test_cases)
      math(EXPR len_test_cases "${len_test_cases} - 1")
      foreach (i RANGE "${len_test_cases}")
      list(GET test_cases ${i} test_case_name)
      add_executable(${test_case_name} ${test_case_name}.cpp)
      target_link_libraries(${test_case_name} PRIVATE GTest::gtest GTest::gtest_main caosdb::caosdb)
      if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
      target_link_libraries(${test_case_name} PRIVATE caosdb_grpc)
      endif()
      target_include_directories(${test_case_name} PUBLIC ${CONAN_INCLUDE_DIRS})
      set_target_properties(${test_case_name}
      PROPERTIES
      CXX_CLANG_TIDY "${_CMAKE_CXX_CLANG_TIDY}"
      CXX_INCLUDE_WHAT_YOU_USE "${_CMAKE_CXX_INCLUDE_WHAT_YOU_USE}")
      gtest_discover_tests(${test_case_name}
      PROPERTIES
      LABELS "caosdb-cpplib-int-tests")
      endforeach ()
      add_executable(test_info test_info.cpp)
      target_link_libraries(test_info PRIVATE GTest::gtest GTest::gtest_main caosdb::caosdb)
      gtest_discover_tests(test_info)
      # foreach(test_case ${test_cases})
      # add_executable(${test_case} ${test_case}.cpp)
      # target_link_libraries(${test_case} PRIVATE GTest::gtest GTest::gtest_main caosdb::caosdb)
      # if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
      # target_link_libraries(${test_case} PRIVATE caosdb_grpc)
      # endif()
      # endforeach()
      # list(LENGTH test_cases len_test_cases)
      # math(EXPR len_test_cases "${len_test_cases} - 1")
      # foreach (i RANGE "${len_test_cases}")
      # list(GET test_cases ${i} test_case_name)
      # add_executable(${test_case_name} ${test_case_name}.cpp)
      # target_link_libraries(${test_case_name} PRIVATE GTest::gtest GTest::gtest_main caosdb::caosdb)
      # if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
      # target_link_libraries(${test_case_name} PRIVATE caosdb_grpc)
      # endif()
      # target_include_directories(${test_case_name} PUBLIC ${CONAN_INCLUDE_DIRS})
      # set_target_properties(${test_case_name}
      # PROPERTIES
      # CXX_CLANG_TIDY "${_CMAKE_CXX_CLANG_TIDY}"
      # CXX_INCLUDE_WHAT_YOU_USE "${_CMAKE_CXX_INCLUDE_WHAT_YOU_USE}")
      # gtest_discover_tests(${test_case_name}
      # PROPERTIES
      # LABELS "caosdb-cpplib-int-tests")
      # endforeach ()
      ......@@ -7,9 +7,12 @@ from conan.tools.build import cross_building
      class LibcaosdbTestConan(ConanFile):
      settings = "os", "compiler", "build_type", "arch"
      build_requires = [
      ("gtest/1.11.0"),
      ]
      def requirements(self):
      self.requires(self.tested_reference_str)
      self.test_requires("gtest/1.11.0")
      self.requires("grpc/1.48.4")
      self.requires("protobuf/3.21.12")
      self.requires("boost/1.78.0")
      def layout(self):
      cmake_layout(self, src_folder=".")
      ......@@ -26,10 +29,10 @@ class LibcaosdbTestConan(ConanFile):
      cmake.configure()
      cmake.build()
      def imports(self):
      copy("*.dll", dst="bin", src="bin")
      copy("*.dylib*", dst="bin", src="lib")
      copy('*.so*', dst='bin', src='lib')
      # def imports(self):
      # copy("*.dll", dst="bin", src="bin")
      # copy("*.dylib*", dst="bin", src="lib")
      # copy('*.so*', dst='bin', src='lib')
      def test(self):
      if not cross_building(self):
      ......
      0% Loading or .
      You are about to add 0 people to the discussion. Proceed with caution.
      Finish editing this message first!
      Please register or to comment