• google相关的基础软件


    1、glog

    GlogTest.cpp

    #include <iostream>
    #include <stdlib.h>
    #include <glog/logging.h>
    #include <ros/ros.h>
    int main(int argc, char** argv)
    {
        google::InitGoogleLogging(argv[0]);
        google::SetLogDestination(google::GLOG_INFO, "./test_glog_info");
    
        ros::init(argc, argv, "glog_node");
        ros::NodeHandle nh("glog");
        LOG(INFO) << "Hello glog";
        return 0;
    }
    View Code

    CMakeLists.txt

    add_executable(glog_test src/Test/GlogTest.cpp)
    target_link_libraries( glog_test
            ${catkin_LIBRARIES}
            glog
    )
    
    不需要添加find_package和include_directories
    View Code

    2、gflags

    GflagsTest.cpp

    //
    // Created by gary on 2021/1/16.
    //
    
    #include <iostream>
    
    #include <gflags/gflags.h>
    #include <ros/ros.h>
    
    DEFINE_string(host, "127.0.0.1", "the sever host");
    DEFINE_int32(port, 12306, "the sever port");
    
    int main(int argc, char ** argv)
    {
        google::SetUsageMessage("
     usage
    ");
        google::ParseCommandLineFlags(&argc, &argv, true);
        ros::init(argc, argv, "gflags_node");
        ros::NodeHandle nh("gflags");
        std::cout << "The sever host is: " << FLAGS_host
        << ", the server port is: " << FLAGS_port << std::endl;
        return 0;
    }
    View Code

    CMakeLists.txt

    add_compile_options(-std=c++11)
    add_compile_options(-pthread)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
    
    find_package(gflags REQUIRED)
    include_directories(${gflags_INCLUDE_DIRS})
    add_executable(gflag_test src/Test/GflagsTest.cpp)
    target_link_libraries( gflag_test
            ${catkin_LIBRARIES}
            gflags
            )
    View Code

    3、Abseil

    Abseil.cpp

    #include <iostream>
    #include <string>
    #include <vector>
    #include "absl/strings/str_join.h"
    #include <ros/ros.h>
    int main(int argc, char** argv) {
    
        ros::init(argc, argv, "gtest_node");
        ros::NodeHandle nh("gtest");
        std::vector<std::string> v = {"foo","bar","baz"};
        std::string s = absl::StrJoin(v, "-");
    
        std::cout << "Joined string: " << s << "
    ";
        return 0;
    }
    View Code

    CMakeLists.txt

    find_package(absl REQUIRED)
    add_executable(abseil_test src/Test/Abseil.cpp)
    target_link_libraries( abseil_test
            ${catkin_LIBRARIES}
            absl::strings
            )
    View Code

    4、Gtest

    外层

    GTestMain.cpp

    #include <iostream>
    #include <ros/ros.h>
    
    int main(int argc, char** argv)
    {
        ros::init(argc, argv, "gtest_node");
        ros::NodeHandle nh("gtest");
        std::cout << "in main " << std::endl;
        return 0;
    }
    View Code

    CMakeLists.txt

    include_directories({PROJECT_SOURCE_DIR}/src)
    enable_testing()
    set(GTest_project src/Test/GTest/Test/MyClass.hpp)
    add_executable(gtest_ ${GTest_project}
                         src/Test/GTest/GTestMain.cpp)
    target_link_libraries( gtest_
            ${catkin_LIBRARIES}
            )
    
    add_subdirectory(src/Test/GTest/Test)
    View Code

    内层目录

    GTest/Test

    下面的内容

    MyClass.cpp

    #include <gtest/gtest.h>
    
    #include "MyClass.hpp"
    
    TEST(test_my_class, get_age)
    {
        my_class myClass("Joel", 21);
        ASSERT_TRUE(myClass.get_age() == 21) << "age is not 16";
    }
    
    TEST(test_my_class, get_name)
    {
        my_class myClass("Joel", 21);
        ASSERT_EQ(myClass.get_name(), "Joel") << "name is not Joel";
    }
    View Code

    MyClass.hpp

    #ifndef SRC_MYCLASS_HPP
    #define SRC_MYCLASS_HPP
    #pragma once
    
    #include <string>
    
    class my_class
    {
    public:
        my_class(const std::string& name, int age)
        {
            m_age = age;
            m_name = name;
        }
    
    public:
        int get_age() { return m_age; }
        std::string get_name() { return m_name; }
    
    private:
        int m_age;
        std::string m_name;
    };
    #endif //SRC_MYCLASS_HPP
    View Code

    CMakeLists.txt

    # 查找 GTest 库
    find_package(GTest REQUIRED)
    # GTest 的头文件
    include_directories(${GTEST_INCLUDE_DIRS})
    
    add_executable(test_my_class MyClass.cpp)
    
    # 链接测试库
    target_link_libraries( test_my_class
            ${GTEST_BOTH_LIBRARIES}
            pthread)
    
    # 添加到测试
    gtest_discover_tests(test_my_class)
    View Code
  • 相关阅读:
    c#+oracle存储过程实现分页
    C#中调用Matlab程序
    Oracle 自定义TYPE 的几种用法(转)
    oracle嵌套表示例
    矩阵的秩及矩阵的广义逆
    矩阵的定义及其运算规则
    矩阵微分
    matlab中取模(mod)与取余(rem)的区别
    hog源码分析
    矩阵的转置、求逆及分块
  • 原文地址:https://www.cnblogs.com/gary-guo/p/14287439.html
Copyright © 2020-2023  润新知