Package Summary
Tags | No category tags. |
Version | 8.0.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/xqms/rosfmt.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2023-07-10 |
Dev Status | MAINTAINED |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Max Schwarz
Authors
rosfmt
rosfmt
is a ROS wrapper around the awesome fmt library, which offers
modern C++11 type-safe formatting strings.
TLDR: Instead of
#include <ros/console.h>
ROS_INFO("Here is my string: %s. And a number: %llu",
my_string.c_str(), my_number
);
you can now write:
#include <rosfmt/rosfmt.h>
ROSFMT_INFO("Here is my string: {}. And a number: {}",
my_string, my_number
);
For more complicated messages, you can use named arguments:
ROSFMT_INFO("Here is my string: {str}. And a number: {num}",
fmt::arg("str", my_string),
fmt::arg("num", my_number)
);
Using rosfmt/full.h
you can print types with std::ostream
operators
(ROS messages, Eigen types) and ranges such as std::vector
:
#include <rosfmt/full.h>
auto x = Eigen::Matrix3d::Identity();
ROSFMT_INFO("My matrix x:\n{}", x);
Of course, you can also use fmt’s API directly:
std::string str = fmt::format("my string: {}", my_string);
See the fmt documentation for more details about fmt’s features. For example, you can easily define printing routines for your own data structures.
Usage
Just depend on the rosfmt
catkin package as usual. One catch is that fmt
requires C++11, so you need to enable that:
cmake_minimum_required(VERSION 3.0)
project(my_package)
find_package(catkin REQUIRED COMPONENTS
rosfmt
roscpp
rosconsole # might be required in older versions of rosfmt
)
catkin_package()
include_directories(${catkin_INCLUDE_DIRS})
# Important: enable C++11
set(CMAKE_CXX_STANDARD 11)
add_executable(my_node
src/my_node.cpp
)
target_link_libraries(my_node
${catkin_LIBRARIES}
)
License
rosfmt
and the underlying fmt
library are licensed under the BSD-2 license.
Changelog for package rosfmt
8.0.0 (2023-07-10)
- Make the tests part conditional with CATKIN_ENABLE_TESTING check (PR #10)
- Allow compile time checking of string (missing placeholders, etc) (PR #7)
- Bump fmt to version 9.1.0
- Add CI workflow (PR #8)
- Use default C++ version instead of 11 (PR #6)
- Fix CMake example in README (PR #5)
- Contributors: Lucas Walter, Max Schwarz, Morten Fyhn Amundsen, Romain Reignier, mla
7.0.0 (2021-01-03)
- rename rosfmt library to rosfmt7 to prevent ABI mismatches
- Update fmt to 7.1.2
- cmake: fix ordering of internal include paths
- add new full.h header (issue: #2)
- Contributors: Max Schwarz
6.2.0 (2020-01-09)
- ensure vformat is only instantiated once -> faster compile times
- update to fmt 6.0.0
- Contributors: Max Schwarz
6.1.0 (2019-05-14)
- cmake: fix dependency tracking bugs
- update fmt to version 5.3.0
- Contributors: Max Schwarz
6.0.0 (2018-11-14)
- Major release bump to decouple rosfmt and fmt versions
- rosfmt.h: produce nicer error message if C++11 is not available
- cmake: add transitive rosconsole / roscpp deps
- README: add CMake example
- Contributors: Max Schwarz
5.2.2 (2018-10-29)
- README: syntax highlighting
- add README.md, LICENSE.txt
- initial commit - basics are working
- Contributors: Max Schwarz
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roscpp | |
rosconsole |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
rosbag_fancy | |
rqt_rosbag_fancy | |
rosmon_core |
Launch files
Messages
Services
Plugins
Recent questions tagged rosfmt at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 8.0.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/xqms/rosfmt.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2023-07-10 |
Dev Status | MAINTAINED |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Max Schwarz
Authors
rosfmt
rosfmt
is a ROS wrapper around the awesome fmt library, which offers
modern C++11 type-safe formatting strings.
TLDR: Instead of
#include <ros/console.h>
ROS_INFO("Here is my string: %s. And a number: %llu",
my_string.c_str(), my_number
);
you can now write:
#include <rosfmt/rosfmt.h>
ROSFMT_INFO("Here is my string: {}. And a number: {}",
my_string, my_number
);
For more complicated messages, you can use named arguments:
ROSFMT_INFO("Here is my string: {str}. And a number: {num}",
fmt::arg("str", my_string),
fmt::arg("num", my_number)
);
Using rosfmt/full.h
you can print types with std::ostream
operators
(ROS messages, Eigen types) and ranges such as std::vector
:
#include <rosfmt/full.h>
auto x = Eigen::Matrix3d::Identity();
ROSFMT_INFO("My matrix x:\n{}", x);
Of course, you can also use fmt’s API directly:
std::string str = fmt::format("my string: {}", my_string);
See the fmt documentation for more details about fmt’s features. For example, you can easily define printing routines for your own data structures.
Usage
Just depend on the rosfmt
catkin package as usual. One catch is that fmt
requires C++11, so you need to enable that:
cmake_minimum_required(VERSION 3.0)
project(my_package)
find_package(catkin REQUIRED COMPONENTS
rosfmt
roscpp
rosconsole # might be required in older versions of rosfmt
)
catkin_package()
include_directories(${catkin_INCLUDE_DIRS})
# Important: enable C++11
set(CMAKE_CXX_STANDARD 11)
add_executable(my_node
src/my_node.cpp
)
target_link_libraries(my_node
${catkin_LIBRARIES}
)
License
rosfmt
and the underlying fmt
library are licensed under the BSD-2 license.
Changelog for package rosfmt
8.0.0 (2023-07-10)
- Make the tests part conditional with CATKIN_ENABLE_TESTING check (PR #10)
- Allow compile time checking of string (missing placeholders, etc) (PR #7)
- Bump fmt to version 9.1.0
- Add CI workflow (PR #8)
- Use default C++ version instead of 11 (PR #6)
- Fix CMake example in README (PR #5)
- Contributors: Lucas Walter, Max Schwarz, Morten Fyhn Amundsen, Romain Reignier, mla
7.0.0 (2021-01-03)
- rename rosfmt library to rosfmt7 to prevent ABI mismatches
- Update fmt to 7.1.2
- cmake: fix ordering of internal include paths
- add new full.h header (issue: #2)
- Contributors: Max Schwarz
6.2.0 (2020-01-09)
- ensure vformat is only instantiated once -> faster compile times
- update to fmt 6.0.0
- Contributors: Max Schwarz
6.1.0 (2019-05-14)
- cmake: fix dependency tracking bugs
- update fmt to version 5.3.0
- Contributors: Max Schwarz
6.0.0 (2018-11-14)
- Major release bump to decouple rosfmt and fmt versions
- rosfmt.h: produce nicer error message if C++11 is not available
- cmake: add transitive rosconsole / roscpp deps
- README: add CMake example
- Contributors: Max Schwarz
5.2.2 (2018-10-29)
- README: syntax highlighting
- add README.md, LICENSE.txt
- initial commit - basics are working
- Contributors: Max Schwarz
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roscpp | |
rosconsole |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
rosbag_fancy | |
rqt_rosbag_fancy | |
rosmon_core |