Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在我的项目包中使用C++库GTSAM? 这是我第一次使用外部C++库,不看OpenCV。在代码中,我使用了很多功能,但我相信我的问题与ROS无关。我想建立一个项目与_C++_Compiler Errors_Cmake_Ros - Fatal编程技术网

如何在我的项目包中使用C++库GTSAM? 这是我第一次使用外部C++库,不看OpenCV。在代码中,我使用了很多功能,但我相信我的问题与ROS无关。我想建立一个项目与

如何在我的项目包中使用C++库GTSAM? 这是我第一次使用外部C++库,不看OpenCV。在代码中,我使用了很多功能,但我相信我的问题与ROS无关。我想建立一个项目与,c++,compiler-errors,cmake,ros,C++,Compiler Errors,Cmake,Ros,因此,我将存储库克隆到我的/usr/lib文件夹中,并按照说明进行安装。 然后我编写了CMakeLists.txt,在我的.h文件中添加了两个include,并尝试编译。 我的.h文件的开头、编译错误和我的CMakeLists.txt如下所示。有趣的是,如果我把第二个include注释掉,只包含Pose2.h,编译就可以了。这意味着编译器至少可以从库中找到一些头文件,因为它已正确安装。我的cmake代码中用于链接库的部分是从给定的示例项目中提取的。感谢您的帮助 汽车库h: My CMakeLis

因此,我将存储库克隆到我的/usr/lib文件夹中,并按照说明进行安装。 然后我编写了CMakeLists.txt,在我的.h文件中添加了两个include,并尝试编译。 我的.h文件的开头、编译错误和我的CMakeLists.txt如下所示。有趣的是,如果我把第二个include注释掉,只包含Pose2.h,编译就可以了。这意味着编译器至少可以从库中找到一些头文件,因为它已正确安装。我的cmake代码中用于链接库的部分是从给定的示例项目中提取的。感谢您的帮助

汽车库h:

My CMakeLists.txt:


尝试用< /P>替换C++下的BIT库


尝试用< /P>替换C++下的BIT库


对于那些试图使用makefile做同样事情的人,下面是解决方案。[注意:这是针对简单的没有ROS的C++程序]。
all: main.cpp
    @g++ main.cpp \
    -std=c++11 \
    -I /usr/include/eigen3 \
    -lboost_system -lboost_filesystem \
    -lgtsam \
    -o main
clear:
    @rm -rf main

对于那些试图使用makefile做同样事情的人,下面是解决方案。[注意:这是针对简单的没有ROS的C++程序]。
all: main.cpp
    @g++ main.cpp \
    -std=c++11 \
    -I /usr/include/eigen3 \
    -lboost_system -lboost_filesystem \
    -lgtsam \
    -o main
clear:
    @rm -rf main

成年男子非常感谢。现在可以了。您能详细说明一下为什么要将三个命令的内容更改为add_library、target_link_libraries和add_executable吗?会帮助我更好地理解cmake!哇,我希望我能早点找到这个;我的问题是在这里使用大写的GTSAM@EE学生,我推荐这个柳絮演练:我无法让它工作。我得到/usr/local/include/gtsam/base/OptionalJacobian.h:22:23:致命错误:固有/密集:人。。非常感谢。现在可以了。您能详细说明一下为什么要将三个命令的内容更改为add_library、target_link_libraries和add_executable吗?会帮助我更好地理解cmake!哇,我希望我能早点找到这个;我的问题是在这里使用大写的GTSAM@EE学生,我推荐这个柳絮演练:我无法让它工作。我得到/usr/local/include/gtsam/base/OptionalJacobian.h:22:23:致命错误:本征/密集:
cmake_minimum_required(VERSION 2.8.3)
project(car)

## Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)

find_package(catkin REQUIRED COMPONENTS
  geometry_msgs
  message_generation
  nav_msgs
  roscpp
  sensor_msgs
  std_msgs
)

###### GTSAM STUFF STARTS HERE

# Include GTSAM CMake tools
find_package(GTSAMCMakeTools)
#include(GtsamBuildTypes) # Load build type flags and default to Debug mode
#include(GtsamTesting)    # Easy functions for creating unit tests and scripts
#include(GtsamMatlabWrap) # Automatic MATLAB wrapper generation

# Ensure that local folder is searched before library folders
#include_directories(BEFORE "${PROJECT_SOURCE_DIR}")

###################################################################################
# Find GTSAM components
find_package(GTSAM REQUIRED) # Uses installed package
include_directories(${GTSAM_INCLUDE_DIR})

###################################################################################
# Build static library from common sources
#set(CONVENIENCE_LIB_NAME ${PROJECT_NAME})
#add_library(${CONVENIENCE_LIB_NAME} STATIC include/car/car_lib.h src/car_lib.cpp)
#target_link_libraries(${CONVENIENCE_LIB_NAME} gtsam)

###### GTSAM STUFF ENDS HER

catkin_package(
  INCLUDE_DIRS include
  LIBRARIES car_lib
  CATKIN_DEPENDS
  geometry_msgs
  message_runtime
  nav_msgs
  roscpp
  sensor_msgs
  std_msgs
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

## Declare a C++ library
add_library(car_lib
  include/${PROJECT_NAME}/car_lib.h
  src/car_lib.cpp
)

add_executable(car_node src/car_node)
target_link_libraries(car_node ${catkin_LIBRARIES})
target_link_libraries(car_lib
  ${catkin_LIBRARIES}
)
## Declare a C++ library
add_library(car_lib src/car_lib.cpp)
target_link_libraries(car_lib 
  gtsam
  ${catkin_LIBRARIES}
)

add_executable(car_node src/car_node)
target_link_libraries(car_node 
  car_lib
  gtsam
  ${catkin_LIBRARIES}
)
all: main.cpp
    @g++ main.cpp \
    -std=c++11 \
    -I /usr/include/eigen3 \
    -lboost_system -lboost_filesystem \
    -lgtsam \
    -o main
clear:
    @rm -rf main