feat: support create conan package

This commit is contained in:
insleker 2025-05-27 16:54:33 +08:00
parent 42a8fd2d45
commit f49e4991db
5 changed files with 62 additions and 7 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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)

View File

@ -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")

View File

@ -0,0 +1,12 @@
#include <kdl_parser/kdl_parser.hpp>
int main()
{
KDL::Tree tree;
std::string xml_string = "<robot name=\"test_robot\"><link name=\"base_link\"/></robot>";
if (!kdl_parser::treeFromString(xml_string, tree))
{
return 1; // Failed to parse the KDL tree from the string
}
return 0;
}