Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 50 additions & 25 deletions config_utilities/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,13 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(OptionalPackage)

option(BUILD_SHARED_LIBS "Build shared libs" ON)
option(CONFIG_UTILS_ENABLE_EIGEN "Export Eigen and build related code" ON)
option(CONFIG_UTILS_ENABLE_GLOG "Export glog and build related code" ON)
option(CONFIG_UTILS_BUILD_TESTS "Build unit tests" ON)
option(CONFIG_UTILS_BUILD_DEMOS "Build demo executables" ON)

find_package(yaml-cpp REQUIRED)
find_package(Boost CONFIG REQUIRED COMPONENTS filesystem system)
find_optional(Eigen3 CONFIG_UTILS_ENABLE_EIGEN)
find_optional_pkgcfg(libglog CONFIG_UTILS_ENABLE_GLOG)
find_package(Eigen3 QUIET)
find_package(glog QUIET)

add_library(
${PROJECT_NAME}
Expand All @@ -36,6 +30,7 @@ add_library(
src/formatter.cpp
src/field_input_info.cpp
src/log_to_stdout.cpp
src/log_to_glog.cpp
src/logger.cpp
src/meta_data.cpp
src/namespacing.cpp
Expand All @@ -49,39 +44,69 @@ add_library(
src/yaml_parser.cpp
src/yaml_utils.cpp
)
target_include_directories(
${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)

# Set up main library linkage
target_link_libraries(
${PROJECT_NAME}
PUBLIC yaml-cpp
PRIVATE Boost::filesystem Boost::system Boost::boost ${CMAKE_DL_LIBS})
target_include_directories(
${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
target_compile_options(${PROJECT_NAME} PRIVATE -Wall)
set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE 1)
add_library(config_utilities::${PROJECT_NAME} ALIAS ${PROJECT_NAME})

add_executable(composite-configs app/composite_configs.cpp)
target_link_libraries(composite-configs ${PROJECT_NAME})

if(ENABLE_Eigen3)
if(Eigen3_FOUND)
target_link_libraries(${PROJECT_NAME} PUBLIC Eigen3::Eigen)
endif()

if(ENABLE_libglog)
target_link_libraries(${PROJECT_NAME} PUBLIC PkgConfig::libglog)
if(glog_FOUND)
target_link_libraries(${PROJECT_NAME} PUBLIC glog::glog)
target_compile_definitions(${PROJECT_NAME} PRIVATE CONFIG_UTILS_ENABLE_GLOG_LOGGING)
endif()

message(STATUS "Eigen features enabled: ${ENABLE_Eigen3}")
message(STATUS "glog features enabled: ${ENABLE_libglog}")
add_executable(composite-configs app/composite_configs.cpp)
target_link_libraries(composite-configs ${PROJECT_NAME})

if(CONFIG_UTILS_BUILD_DEMOS)
add_subdirectory(demos)
endif()

if(CONFIG_UTILS_BUILD_TESTS)
include(CTest)
include(CTest)
if(BUILD_TESTING)
enable_testing()
add_subdirectory(test)
endif()

include(HandleInstall)
# Install targets and headers
include(GNUInstallDirs)
install(
TARGETS ${PROJECT_NAME} composite-configs
EXPORT config_utilities-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(
EXPORT config_utilities-targets
FILE config_utilitiesTargets.cmake
NAMESPACE config_utilities::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/config_utilities)

# Install packaging
include(CMakePackageConfigHelpers)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/cmake/config_utilitiesConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/config_utilitiesConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/config_utilities)
write_basic_package_version_file(
config_utilitiesConfigVersion.cmake
VERSION ${PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config_utilitiesConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/config_utilitiesConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/config_utilities)

# Exposes this package to ament for ros2 run and other utilities to work
find_package(ament_cmake_core QUIET)
if (${ament_cmake_core_FOUND})
ament_package()
endif()
31 changes: 0 additions & 31 deletions config_utilities/cmake/HandleInstall.cmake

This file was deleted.

50 changes: 0 additions & 50 deletions config_utilities/cmake/OptionalPackage.cmake

This file was deleted.

20 changes: 2 additions & 18 deletions config_utilities/cmake/config_utilitiesConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,8 @@ get_filename_component(config_utilities_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}"
include(CMakeFindDependencyMacro)

find_dependency(yaml-cpp REQUIRED)

if(@ENABLE_Eigen3@)
find_dependency(Eigen3 REQUIRED)
endif()

if(@ENABLE_roscpp@)
find_dependency(roscpp REQUIRED)
set(config_utilities_FOUND_CATKIN_PROJECT TRUE)
endif()

if(@ENABLE_rclcpp@)
find_dependency(rclcpp REQUIRED)
endif()

if(@ENABLE_libglog@)
find_dependency(PkgConfig REQUIRED)
pkg_check_modules(libglog IMPORTED_TARGET libglog)
endif()
find_dependency(Eigen3 QUIET)
find_dependency(glog QUIET)

if(NOT TARGET config_utilities::config_utilities)
include("${config_utilities_CMAKE_DIR}/config_utilitiesTargets.cmake")
Expand Down
2 changes: 1 addition & 1 deletion config_utilities/demos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
if(ENABLE_Eigen3)
if(Eigen3_FOUND)
add_executable(demo_config demo_config.cpp)
target_link_libraries(demo_config ${PROJECT_NAME})
endif()
Expand Down
10 changes: 3 additions & 7 deletions config_utilities/include/config_utilities/formatting/asl.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,19 @@
#include <string>
#include <vector>

#include "config_utilities/factory.h"
#include "config_utilities/internal/formatter.h"
#include "config_utilities/internal/meta_data.h"

namespace config::internal {

/**
* @brief Implements formatting of text in the style of https://github.com/ethz-asl/config_utilities, emphasizing
* readability wenn printed to the console.
* readability when printed to the console.
*/
class AslFormatter : public Formatter {
public:
AslFormatter() = default;
~AslFormatter() override = default;
virtual ~AslFormatter() = default;

protected:
std::string formatErrorsImpl(const MetaData& data,
Expand All @@ -64,12 +63,9 @@ class AslFormatter : public Formatter {
std::string formatConfigsImpl(const std::vector<MetaData>& data) override;

private:
// Factory registration to allow setting of formatters via Settings::setFormatter().
inline static const auto registration_ = Registration<Formatter, AslFormatter>("asl");

// Initialize the asl formatter to be used if included.
inline static const struct Initializer {
Initializer() { Formatter::setFormatter(std::make_unique<AslFormatter>()); }
Initializer();
} initializer_;

// Helper functions.
Expand Down
29 changes: 2 additions & 27 deletions config_utilities/include/config_utilities/logging/log_to_glog.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@

#pragma once

#include <glog/logging.h>

#include "config_utilities/factory.h"
#include "config_utilities/internal/logger.h"

namespace config::internal {
Expand All @@ -48,33 +45,11 @@ namespace config::internal {
*/
class GlogLogger : public Logger {
public:
GlogLogger() = default;
GlogLogger();
virtual ~GlogLogger() = default;

protected:
void logImpl(const Severity severity, const std::string& message) override {
switch (severity) {
case Severity::kInfo:
LOG(INFO) << message;
break;

case Severity::kWarning:
LOG(WARNING) << message;

break;

case Severity::kError:
LOG(ERROR) << message;
break;

case Severity::kFatal:
LOG(FATAL) << message;
}
}

private:
// Factory registration to allow setting of formatters via Settings::setLogger().
inline static const auto registration_ = Registration<Logger, GlogLogger>("glog");
void logImpl(const Severity severity, const std::string& message) override;
};

} // namespace config::internal
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@

#pragma once

#include "config_utilities/factory.h"
#include "config_utilities/internal/logger.h"

namespace config::internal {
Expand All @@ -60,11 +59,11 @@ class StdoutLogger : public Logger {
private:
const Severity min_severity_;
const Severity stderr_severity_;
// Factory registration to allow setting of formatters via Settings::setLogger().
inline static const auto registration_ = Registration<Logger, StdoutLogger>("stdout");

// Initialize the stdout logger to be used if included.
inline static const struct Initializer { Initializer(); } initializer_ = Initializer();
inline static const struct Initializer {
Initializer();
} initializer_ = Initializer();
};

} // namespace config::internal
9 changes: 9 additions & 0 deletions config_utilities/src/asl_formatter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,20 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* -------------------------------------------------------------------------- */

#include "config_utilities/factory.h"
#include "config_utilities/formatting/asl.h"
#include "config_utilities/internal/string_utils.h"
#include "config_utilities/settings.h"

namespace config::internal {
namespace {

// Factory registration to allow setting of formatters via Settings::setFormatter().
static const auto registration = Registration<Formatter, AslFormatter>("asl");

} // namespace

AslFormatter::Initializer::Initializer() { Formatter::setFormatter(std::make_unique<AslFormatter>()); }

std::string AslFormatter::formatErrorsImpl(const MetaData& data,
const std::string& what,
Expand Down
Loading