- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,我在使用 CmakeList 和依赖 Boost 时遇到了问题。我的 CmakeList 看起来像这样:
cmake_minimum_required(VERSION 2.8.3)
project(cpp_arm)
add_compile_options(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
moveit_core
)
find_package(Boost REQUIRED COMPONENTS
system
filesystem
date_time
thread
)
catkin_package()
include_directories(${catkin_INCLUDE_DIRS})
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
add_executable(hello_world src/hello_world.cpp)
add_executable(test_arm src/test_arm.cpp)
target_link_libraries(cpp_arm ${Boost_LIBRARIES})
install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
PATTERN "setup_assistant.launch" EXCLUDE)
install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
首先,我遇到了无法完成 catkin_make 的问题。我没有以下代码:
target_link_libraries(cpp_arm ${Boost_LIBRARIES})
这给了我以下错误:
CMakeFiles/test_arm.dir/src/test_arm.cpp.o: In function `_GLOBAL__sub_I_main':
test_arm.cpp:(.text.startup+0x43): undefined reference to `boost::system::generic_category()'
test_arm.cpp:(.text.startup+0x48): undefined reference to `boost::system::generic_category()'
test_arm.cpp:(.text.startup+0x4d): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
在查找该错误后,我发现了关于此(在堆栈上)的不同主题,它们说您需要链接 cmakelist 中的 boost 库以让 cmake“找到”它。正如我的代码所示(根据上述主题中描述的语法),我这样做了,但这会导致新错误:
CMake Error at cpp_arm/CMakeLists.txt:25 (target_link_libraries):
Cannot specify link libraries for target "cpp_arm" which is not built by
this project.
我查那个错误的时候主要是看到题目说链接库的语法不正确,问题是我的语法和题目中提到的语法一样作为解决方案。
为什么会出现此错误,我该如何解决?
提前致谢
编辑:我发现有些人对我的项目实际上是什么感到困惑。我正在运行一个 ROS 包,它是通过 MoveIT 安装助手创建的,它在我的 catkin_workspace 中为 ROS 生成一个包。在这个工作区内,我的包文件夹位于名为 cpp_arm 的位置。在这个包/文件夹中是我的 CmakeList,在这个文件夹中还有一个文件夹 src,其中包含一个简单的 c++ 文件 (test_arm.cpp)。
这个 cpp 文件看起来像这样:
#include <moveit/move_group_interface/move_group_interface.h>
main()
{
}
我在 Ubuntu 16.04 上运行 ROS kinetic 版本
最佳答案
target_link_libraries
适用于使用 add_library
和 add_executable
创建的目标:cpp_arm
是您项目的名称,但您没有使用此名称创建的目标。像这样:
add_executable(cpp_arm ...)
target_link_libraries(cpp_arm ${Boost_LIBRARIES})
但我想你想要实现的更多是链接 test_arm
:
add_executable(test_arm src/test_arm.cpp)
target_link_libraries(test_arm ${Boost_LIBRARIES})
顺便说一句,而不是:
add_compile_options(-std=c++11)
让CMake根据选择的标准处理编译选项:
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
同时考虑 compile features .
关于c++ - 无法在 CmakeList 中链接 Boost 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564579/
我有三个共享库:lib_1.so、lib_2.so 和 lib_3.so。如何只创建一个名为 lib_all.so 的库,它将包含所有三个库? 我正在尝试编译一些源文件,其中包括来自两个子项目/子目录
我正在构建一个中型 C++ 库,而我的 CMakeLists.txt 文件开始变得有点长。我正在阅读 Robert Martin 的书 The Clean Coder,他在书中讨论了为了代码维护和可读
头文件,库文件: cmake 头文件 库文件_jacke121的专栏-CSDN博客_cmake 头文件 error: ‘__declspec‘ attributes are not enabled;
您好,我有一个名为“问题 1” 的目录,其结构如下: .idea cmake-build-debug 1a.c 1b.c 1c.c CMakeLists.txt .idea 和 cmake-build
我是第一次尝试使用 CMake,并且正在努力将头文件链接到我的 main.h 文件中。我的 cmake 目录如下所示: Project | CmakeLists.txt | src || CMakeL
我觉得这个问题已经被问过很多次了,但我找到的答案似乎都不适合我。我来自 Java 世界,因此对 CMake 和 C/C++ 非常陌生,并且正在努力理解 cmake 及其工作原理。 无论如何,基本上我有
我有一个项目结构,如: src/CMakeLists.txt src/test/component1/CMakeLists.txt src/test/component2/CMakeLists.txt
我想在我的 CMakeLists 中解析一个文件(XML、JSON 或类似文件)并相应地设置一些变量。 例如,假设我有以下文件: 然后在我的 CMakeLi
我想开始一个cmake项目,我有很多文件。结构如下。 types.h和functions.h中包含dag.hfunctions.h和basic.cpp, br.cpp, IR.cpp中包含UIR.cp
linking errors.你好。我有一个包含八个 .c 和八个 .h 文件的项目。我应该如何编写 CMakeLists.txt 来解决所有这些的依赖关系?创建库不是方法,因为每个文件都依赖于其他文
这个问题已经有答案了: Define preprocessor macro through CMake? (6 个回答) 已关闭 5 年前。 在cmake中如何做条件预处理器#ifdef #endif
我在使用 Conan 创建 Cmakelists 的过程中遇到了一些问题。我只是按照官方的例子,但它对我不起作用...... 这是我的 Cmakefiles.txt : cmake_minimum_r
我有以下问题:我有两组不同的文件(主文件和附加文件),我想将它们分开。所以,我有一组文件(主要),我是这样配置的: set(libplayersource .... )
我的项目中有一个目录树: /project /build /src main.cpp student.cpp /include
我正在编写一个游戏引擎,进展顺利。但是我遇到了一个问题,我的 CMakeLists.txt 太乱了,而且我对 CMake 了解不够。我的项目使用多个 (CMake) 库,这些库是使用 add_subd
到处搜索后,我找不到任何东西或任何人来帮助我弄清楚如何将 GL GLEW 和 SDL2 库添加到我的 CMakeLists.txt 中。我正在使用 Ubuntu 14.04 LTS 并使用 安装了以下
在 cmake 项目中包含外部库通常使用 find_package() 执行。 但是在一个大型的多应用程序/多库项目中,一些第 3 方和/或系统库被多个应用程序和库使用是很典型的。 这些常用库的fin
我从官网下载了可移植的CMake版本,并安装在我的家目录(~/usr),因为我没有root或sudo权限。 如何在CMakeLists.txt中指定CMake的安装路径,如~/usr/cmake-pa
介绍 CMakeLists.txt官网教程 , cmake命令配置等教程 CMakeLists.txt文件使用的是Cmake命令完成的,那么我们来了解下常用的命令使用, 这是必须要会的,否则静态库,动
我在使用 Clion (1.0.1) 和 CMakeLists.txt 时遇到问题。 我将 GitHub 用于我的项目,并直接从 IDE 中提交它们。如果我随后在另一台计算机上 checkout 该项
我是一名优秀的程序员,十分优秀!