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