Compare commits

..

4 Commits

Author SHA1 Message Date
727233624e delete console_brigde 2026-02-06 10:12:02 +00:00
948405bba4 update for ROS 2026-01-07 16:56:28 +07:00
5f7ae1233d update if define 2026-01-05 18:55:26 +07:00
6a3dea8614 update hieplm 2026-01-05 18:14:29 +07:00
14 changed files with 133 additions and 137 deletions

View File

@@ -1,68 +1,51 @@
cmake_minimum_required(VERSION 3.0.2) cmake_minimum_required(VERSION 3.0.2)
project(robot_xmlrpcpp VERSION 1.0.0 LANGUAGES CXX)
# ========================================================
# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake
# ========================================================
# Detect if building with Catkin
if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL)
set(BUILDING_WITH_CATKIN TRUE) set(BUILDING_WITH_CATKIN TRUE)
message(STATUS "Building robot_xmlrpcpp with Catkin") message(STATUS "Building robot_xmlrpcpp with Catkin")
else() else()
set(BUILDING_WITH_CATKIN FALSE) set(BUILDING_WITH_CATKIN FALSE)
message(STATUS "Building robot_xmlrpcpp with Standalone CMake") message(STATUS "Building robot_xmlrpcpp with Standalone CMake")
endif() endif()
project(robot_xmlrpcpp) # C++ Standard - must be set before find_package
## Compile as C++17
add_compile_options(-std=c++17)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_EXTENSIONS OFF)
# ========================================================
# Find Packages
# ========================================================
if(BUILDING_WITH_CATKIN) if (NOT BUILDING_WITH_CATKIN)
## Find catkin macros and libraries
find_package(catkin REQUIRED)
endif()
## System dependencies are found with CMake's conventions # Enable Position Independent Code
find_package(console_bridge REQUIRED) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Cấu hình RPATH để tránh cycle trong runtime search path
set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR}")
else()
# ======================================================== # ========================================================
# Catkin specific configuration # Catkin specific configuration
# ======================================================== # ========================================================
find_package(catkin REQUIRED)
if(BUILDING_WITH_CATKIN)
## The catkin_package macro generates cmake config files for your package
catkin_package( catkin_package(
INCLUDE_DIRS include INCLUDE_DIRS include
LIBRARIES robot_xmlrpcpp LIBRARIES ${PROJECT_NAME}
CATKIN_DEPENDS )
DEPENDS console_bridge
include_directories(
include
${catkin_INCLUDE_DIRS}
) )
endif() endif()
########### # Libraries
## Build ## add_library(${PROJECT_NAME} SHARED
###########
## Specify additional locations of header files
include_directories(
include
${console_bridge_INCLUDE_DIRS}
)
if(BUILDING_WITH_CATKIN)
include_directories(${catkin_INCLUDE_DIRS})
endif()
## Declare a C++ library
add_library(robot_xmlrpcpp
src/XmlRpcClient.cpp src/XmlRpcClient.cpp
src/XmlRpcDispatch.cpp src/XmlRpcDispatch.cpp
src/XmlRpcServer.cpp src/XmlRpcServer.cpp
@@ -74,62 +57,87 @@ add_library(robot_xmlrpcpp
src/XmlRpcValue.cpp src/XmlRpcValue.cpp
) )
## Target include directories if(BUILDING_WITH_CATKIN)
target_include_directories(robot_xmlrpcpp add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_include_directories(${PROJECT_NAME}
PUBLIC PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include>
)
## Add cmake target dependencies of the library
if(BUILDING_WITH_CATKIN)
add_dependencies(robot_xmlrpcpp ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
endif()
## Specify libraries to link a library or executable target against
target_link_libraries(robot_xmlrpcpp
${console_bridge_LIBRARIES}
)
if(BUILDING_WITH_CATKIN)
target_link_libraries(robot_xmlrpcpp ${catkin_LIBRARIES})
endif()
## Compiler flags
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(robot_xmlrpcpp PRIVATE -Wall -Wextra -Wpedantic -fPIC -Wno-unused-parameter)
endif()
# ========================================================
# Installation (Standalone CMake only)
# ========================================================
# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó
install(TARGETS robot_xmlrpcpp
EXPORT robot_xmlrpcpp-targets
ARCHIVE DESTINATION lib # Thư viện tĩnh .a
LIBRARY DESTINATION lib # Thư viện động .so
RUNTIME DESTINATION bin # File thực thi (nếu có)
INCLUDES DESTINATION include # Cài đặt include
)
if(NOT BUILDING_WITH_CATKIN)
install(
DIRECTORY include/
DESTINATION include/
) )
# --- Xuất export set robot_xmlrpcpp-targets thành file CMake module --- target_link_libraries(${PROJECT_NAME}
install(EXPORT robot_xmlrpcpp-targets PUBLIC ${catkin_LIBRARIES}
FILE robot_xmlrpcpp-targets.cmake
NAMESPACE robot_xmlrpcpp::
DESTINATION lib/cmake/robot_xmlrpcpp
) )
else() else()
# Khi build với Catkin, vẫn cần export để các target khác có thể export
install(EXPORT robot_xmlrpcpp-targets target_include_directories(${PROJECT_NAME}
FILE robot_xmlrpcpp-targets.cmake PUBLIC
NAMESPACE robot_xmlrpcpp:: $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
DESTINATION lib/cmake/robot_xmlrpcpp $<INSTALL_INTERFACE:include>
) )
# target_link_libraries(${PROJECT_NAME}
# )
set_target_properties(${PROJECT_NAME} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
)
endif()
# Compiler flags
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -fPIC -Wno-unused-parameter)
endif()
if(BUILDING_WITH_CATKIN)
## Mark libraries for installation
## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
)
## Mark cpp header files for installation
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
FILES_MATCHING PATTERN "*.h"
PATTERN ".svn" EXCLUDE
)
else()
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}-targets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
# Export targets
install(EXPORT ${PROJECT_NAME}-targets
FILE ${PROJECT_NAME}-targets.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION lib/cmake/${PROJECT_NAME}
)
## Mark cpp header files for installation
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION include
FILES_MATCHING PATTERN "*.h"
PATTERN ".svn" EXCLUDE
)
# Print configuration info
message(STATUS "=================================")
message(STATUS "Project: ${PROJECT_NAME}")
message(STATUS "Version: ${PROJECT_VERSION}")
message(STATUS "C++ Standard: ${CMAKE_CXX_STANDARD}")
message(STATUS "=================================")
endif() endif()

View File

@@ -1,5 +1,5 @@
#ifndef _XMLRPC_H_ #ifndef _ROBOT_XMLRPC_H_
#define _XMLRPC_H_ #define _ROBOT_XMLRPC_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
@@ -91,4 +91,4 @@ namespace robot_xmlrpcpp {
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif // _XMLRPC_H_ #endif // _ROBOT_XMLRPC_H_

View File

@@ -1,6 +1,5 @@
#ifndef _ROBOT_XMLRPCCLIENT_H_
#ifndef _XMLRPCCLIENT_H_ #define _ROBOT_XMLRPCCLIENT_H_
#define _XMLRPCCLIENT_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
@@ -125,4 +124,4 @@ namespace robot_xmlrpcpp {
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif // _XMLRPCCLIENT_H_ #endif // _ROBOT_XMLRPCCLIENT_H_

View File

@@ -1,7 +1,6 @@
#ifndef _ROBOT_XMLRPCDISPATCH_H_
#define _ROBOT_XMLRPCDISPATCH_H_
#ifndef _XMLRPCDISPATCH_H_
#define _XMLRPCDISPATCH_H_
//
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
#if defined(_MSC_VER) #if defined(_MSC_VER)
@@ -85,4 +84,4 @@ namespace robot_xmlrpcpp {
}; };
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif // _XMLRPCDISPATCH_H_ #endif // _ROBOT_XMLRPCDISPATCH_H_

View File

@@ -1,7 +1,6 @@
#ifndef _ROBOT_XMLRPCEXCEPTION_H_
#define _ROBOT_XMLRPCEXCEPTION_H_
#ifndef _XMLRPCEXCEPTION_H_
#define _XMLRPCEXCEPTION_H_
//
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
#if defined(_MSC_VER) #if defined(_MSC_VER)
@@ -39,4 +38,4 @@ namespace robot_xmlrpcpp {
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif // _XMLRPCEXCEPTION_H_ #endif // _ROBOT_XMLRPCEXCEPTION_H_

View File

@@ -1,7 +1,6 @@
#ifndef _ROBOT_XMLRPCSERVER_H_
#define _ROBOT_XMLRPCSERVER_H_
#ifndef _XMLRPCSERVER_H_
#define _XMLRPCSERVER_H_
//
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
#if defined(_MSC_VER) #if defined(_MSC_VER)
@@ -101,4 +100,4 @@ namespace robot_xmlrpcpp {
}; };
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif //_XMLRPCSERVER_H_ #endif //_ROBOT_XMLRPCSERVER_H_

View File

@@ -1,5 +1,5 @@
#ifndef _XMLRPCSERVERCONNECTION_H_ #ifndef _ROBOT_XMLRPCSERVERCONNECTION_H_
#define _XMLRPCSERVERCONNECTION_H_ #define _ROBOT_XMLRPCSERVERCONNECTION_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
@@ -99,4 +99,4 @@ namespace robot_xmlrpcpp {
}; };
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif // _XMLRPCSERVERCONNECTION_H_ #endif // _ROBOT_XMLRPCSERVERCONNECTION_H_

View File

@@ -1,7 +1,6 @@
#ifndef _ROBOT_XMLRPCSERVERMETHOD_H_
#ifndef _XMLRPCSERVERMETHOD_H_
#define _XMLRPCSERVERMETHOD_H_ #define _XMLRPCSERVERMETHOD_H_
// #define _ROBOT_XMLRPCSERVERMETHOD_H_
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
#if defined(_MSC_VER) #if defined(_MSC_VER)
@@ -44,4 +43,4 @@ namespace robot_xmlrpcpp {
}; };
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif // _XMLRPCSERVERMETHOD_H_ #endif // _ROBOT_XMLRPCSERVERMETHOD_H_

View File

@@ -1,5 +1,5 @@
#ifndef _XMLRPCSOCKET_H_ #ifndef _ROBOT_XMLRPCSOCKET_H_
#define _XMLRPCSOCKET_H_ #define _ROBOT_XMLRPCSOCKET_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
@@ -66,4 +66,4 @@ namespace robot_xmlrpcpp {
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif #endif // _ROBOT_XMLRPCSOCKET_H_

View File

@@ -1,6 +1,5 @@
#ifndef _ROBOT_XMLRPCSOURCE_H_
#ifndef _XMLRPCSOURCE_H_ #define _ROBOT_XMLRPCSOURCE_H_
#define _XMLRPCSOURCE_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
@@ -52,4 +51,4 @@ namespace robot_xmlrpcpp {
}; };
} // namespace robot_xmlrpcpp } // namespace robot_xmlrpcpp
#endif //_XMLRPCSOURCE_H_ #endif //_ROBOT_XMLRPCSOURCE_H_

View File

@@ -1,5 +1,5 @@
#ifndef _XMLRPCUTIL_H_ #ifndef _ROBOT_XMLRPCUTIL_H_
#define _XMLRPCUTIL_H_ #define _ROBOT_XMLRPCUTIL_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //

View File

@@ -1,6 +1,5 @@
#ifndef _ROBOT_XMLRPCVALUE_H_
#ifndef _XMLRPCVALUE_H_ #define _ROBOT_XMLRPCVALUE_H_
#define _XMLRPCVALUE_H_
// //
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
// //
@@ -185,5 +184,4 @@ namespace robot_xmlrpcpp {
std::ostream& operator<<(std::ostream& os, robot_xmlrpcpp::XmlRpcValue& v); std::ostream& operator<<(std::ostream& os, robot_xmlrpcpp::XmlRpcValue& v);
#endif // _ROBOT_XMLRPCVALUE_H_
#endif // _XMLRPCVALUE_H_

View File

@@ -6,8 +6,8 @@
// //
// //
#if !defined(__BASE64_H_INCLUDED__) #if !defined(__ROBOT_BASE64_H_INCLUDED__)
#define __BASE64_H_INCLUDED__ 1 #define __ROBOT_BASE64_H_INCLUDED__ 1
#ifndef MAKEDEPEND #ifndef MAKEDEPEND
# include <iterator> # include <iterator>

View File

@@ -19,8 +19,4 @@
<buildtool_depend version_gte="0.5.68">catkin</buildtool_depend> <buildtool_depend version_gte="0.5.68">catkin</buildtool_depend>
<build_depend>libconsole-bridge-dev</build_depend>
<run_depend>libconsole-bridge-dev</run_depend>
</package> </package>