diff --git a/kdl_parser/CMakeLists.txt b/kdl_parser/CMakeLists.txt index 90799d6..475a892 100644 --- a/kdl_parser/CMakeLists.txt +++ b/kdl_parser/CMakeLists.txt @@ -112,6 +112,14 @@ else() ${PROJECT_NAME} PUBLIC urdfdom::urdfdom orocos-kdl::orocos-kdl tinyxml::tinyxml tinyxml2::tinyxml2) + set(KDL_PARSER_PUBLIC_HEADERS "include/kdl_parser/kdl_parser.hpp" + "include/kdl_parser/visibility_control.hpp") + + set_target_properties(${PROJECT_NAME} + PROPERTIES PUBLIC_HEADER "${KDL_PARSER_PUBLIC_HEADERS}") + install(TARGETS ${PROJECT_NAME} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/kdl_parser) + if(NOT BUILD_TESTING STREQUAL OFF) enable_testing() diff --git a/kdl_parser/conanfile.py b/kdl_parser/conanfile.py index 3fb5b6d..005f21e 100644 --- a/kdl_parser/conanfile.py +++ b/kdl_parser/conanfile.py @@ -25,18 +25,17 @@ class kdl_parserRecipe(ConanFile): exports_sources = ( "CMakeLists.txt", "src/*", - "tests/*", + "test/*", "include/*", ) def requirements(self): - self.requires("orocos-kdl/[>=1.5.1 <2]") - self.requires("tinyxml/[>=2.6.0 <3]") - self.requires("tinyxml2/[>=11.0.0 <13.0.0]") - self.requires("urdfdom/[>=3.1.1 <5.0.0]") - self.requires("urdfdom_headers/[>=1.1.1 <2]") + self.requires("orocos-kdl/[>=1.5.1 <2]", transitive_headers=True, transitive_libs=True) + self.requires("tinyxml/[>=2.6.0 <3]", transitive_headers=True) + self.requires("tinyxml2/[>=11.0.0 <13.0.0]", transitive_headers=True) + self.requires("urdfdom/[>=3.1.1 <5.0.0]", transitive_headers=True) self.tool_requires("cmake/[>=3.12 <5]") - self.test_requires("gtest/[>=1.11]") + self.test_requires("gtest/[>=1.11 <2.0]") def validate(self): check_min_cppstd(self, "14") @@ -66,6 +65,9 @@ class kdl_parserRecipe(ConanFile): cmake = CMake(self) cmake.configure() cmake.build() + if can_run(self): + cmake.test() + cmake.install() def package(self): cmake = CMake(self) diff --git a/kdl_parser/test_package/CMakeLists.txt b/kdl_parser/test_package/CMakeLists.txt new file mode 100644 index 0000000..cfd8103 --- /dev/null +++ b/kdl_parser/test_package/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.12) +project(test_package LANGUAGES CXX) + +find_package(kdl_parser CONFIG REQUIRED) + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} PRIVATE kdl_parser::kdl_parser) diff --git a/kdl_parser/test_package/conanfile.py b/kdl_parser/test_package/conanfile.py new file mode 100644 index 0000000..1476c8e --- /dev/null +++ b/kdl_parser/test_package/conanfile.py @@ -0,0 +1,26 @@ +import os + +from conan import ConanFile +from conan.tools.cmake import CMake, cmake_layout +from conan.tools.build import can_run + + +class kdl_parserTestConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "CMakeDeps", "CMakeToolchain" + + def requirements(self): + self.requires(self.tested_reference_str) + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def layout(self): + cmake_layout(self) + + def test(self): + if can_run(self): + cmd = os.path.join(self.cpp.build.bindir, "test_package") + self.run(cmd, env="conanrun") \ No newline at end of file diff --git a/kdl_parser/test_package/test_package.cpp b/kdl_parser/test_package/test_package.cpp new file mode 100644 index 0000000..132ce95 --- /dev/null +++ b/kdl_parser/test_package/test_package.cpp @@ -0,0 +1,12 @@ +#include + +int main() +{ + KDL::Tree tree; + std::string xml_string = ""; + if (!kdl_parser::treeFromString(xml_string, tree)) + { + return 1; // Failed to parse the KDL tree from the string + } + return 0; +} \ No newline at end of file