Add external libraries to CMakeList.txt c++
我有我的外部库,如图所示,我创建符号链接后:
以及其他文件中与库相关的头文件:
我正在与ROS ubuntu合作,我需要将这些库添加到我的包CmakeList.txt中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
rosbuild_init()
#set the default path for built executables to the"bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the"lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#common commands for building c++ executables and libraries
#rosbuild_add_library(${PROJECT_NAME} src/example.cpp)
#target_link_libraries(${PROJECT_NAME} another_library)
#rosbuild_add_boost_directories()
#rosbuild_link_boost(${PROJECT_NAME} thread)
#rosbuild_add_executable(example examples/example.cpp)
#target_link_libraries(example ${PROJECT_NAME})
rosbuild_add_executable(kinectueye src/kinect_ueye.cpp) |
所以我的问题是,如何将这些文件夹(我认为我不确定要添加的第一个文件夹)添加到我的CmakeList.txt文件中,以便在程序中使用类和方法。
- 屏幕截图404
- @这只是一个文件夹中文件的屏幕截图。我再也没有了
- 404是我讨厌包含链接的问题的原因。
- @当我发布那个问题的时候,我只是创建了我的帐户,所以我没有足够的声誉在我的问题中发布没有链接的图片。对不起的!
- 抱歉,不知道这些限制。对我来说,允许新帐户嵌入链接但不包括图像是没有意义的。两者都可以用于垃圾邮件,链接甚至更好。另外,我不能再对这个问题投反对票了,因为它已经超过2个小时了(而且,tbh,这个问题有点不好,因为链接不起作用),所以对你的另一个合理问题投反对票。
- @米佳,没关系!我又找到了图书馆,我刚刚编辑了我的文章。谢谢你指出这一点。(@ Pachonk)
- @ja-cpp下次使用tree或类似的东西。
- 可能与外部库的cmake链接重复
我将从升级cmake版本开始。
您可以使用include目录作为标题位置,使用link目录+target链接库作为库。
1 2 3 4
| INCLUDE_DIRECTORIES(your/header/dir)
LINK_DIRECTORIES(your/library/dir)
rosbuild_add_executable(kinectueye src/kinect_ueye.cpp)
TARGET_LINK_LIBRARIES(kinectueye lib1 lib2 lib2 ...) |
注意,lib1被扩展到liblib1.so(在Linux上),所以在没有链接的情况下,使用ln创建适当的链接。
- 例如,包括u目录(home/jros/roskinetictueye/mixedvision/incl ude‌&8203;ude/mixedvision)链接u目录(/home/jros/roskinetictueye/mixedvision/lib64)rosbuild u添加可执行文件(kinetictueye src/kinetictueye.cpp)目标链接库(kinetictueye libgsl.so.0.16.0 libgslcblas.so.0.0.0)
- TARGET_LINK_LIBRARIES(kinectueye gsl gslcblas ...)
- 我得到这个错误:链接cxx可执行文件../bin/kinectuye/usr/bin/ld:找不到-lgsl/usr/bin/ld:找不到-lhalf和所有库!
- 确保在libgsl.so->libgsl.so.0.16.0等目录中有符号链接
- 是的,我有,如我发布的第一张图片所示。
- 不,你不需要,你需要在末尾没有"数字"的libname
- 那我该怎么办?我手动重命名它们?
- 创建符号链接
- 我愿意!文件变得像快捷方式。这是象征性的联系吗?
- 是的,你还知道错误吗?
- 不幸的是,我得到链接cxx可执行文件../bin/kinectueye/usr/bin/ld:找不到-lgsl/usr/bin/ld:找不到-lgslcblas…..还有一些
- 请运行make VERBOSE=1并在此处复制Kinect的完整链接命令。
- 我得到:make:***没有指定目标,也没有找到makefile。停下来。
- make VERBOSE=1 kinectueye,位于从cmake生成构建系统的文件夹中
- 这就是我得到的mediafire.com/?CS2QBQ726Y6QX3F
- 对不起,我不会下载文件。请把它贴在这里。只是一条连接线。
- 链接
- 谢谢@peter,它现在工作了…我把我的包裹从罗斯伯恩换成了柳絮。关于图书馆,我改为*.so。
- 什么是"Kinectueye"?