From 9f2cfa2f5d7052b88e96783a10056a6172479d2e Mon Sep 17 00:00:00 2001 From: Joscha Schmiedt <joscha@schmiedt.dev> Date: Wed, 3 Jul 2024 20:26:49 +0200 Subject: [PATCH] WIP: towards fixing conan create - exports_source had to be adjusted - CMakeLists and conanfile.py of test_package is still broken --- conanfile.py | 22 +++++++++++----- test_package/CMakeLists.txt | 52 ++++++++++++++++++++++++------------- test_package/conanfile.py | 17 +++++++----- 3 files changed, 59 insertions(+), 32 deletions(-) diff --git a/conanfile.py b/conanfile.py index 6170fa5..83c5914 100644 --- a/conanfile.py +++ b/conanfile.py @@ -1,3 +1,4 @@ +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"): diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt index 8592bbd..41be00c 100644 --- a/test_package/CMakeLists.txt +++ b/test_package/CMakeLists.txt @@ -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 () diff --git a/test_package/conanfile.py b/test_package/conanfile.py index 25c91f0..8915ddc 100644 --- a/test_package/conanfile.py +++ b/test_package/conanfile.py @@ -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): -- GitLab