c++ - 将外部库添加到 cmake 项目

标签 c++ cmake robotics

我是 Instituto Superior Técnico 的机器人专业学生,我在项目中使用外部库时遇到问题。

我使用名为 Simox 的机器人模拟器 http://simox.sourceforge.net/ .这是我工作了一段时间的图书馆。我一直在使用模拟器提供的 cmake 模板文件(几乎没有改动),这让我可以在自己的代码中使用 Simox:

PROJECT ( myDemo )

FIND_PACKAGE(Simox REQUIRED)
IF(Simox_USE_COIN_VISUALIZATION)
  include_directories(${PROJECT_SOURCE_DIR}/include)

  FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/iCubSimulator.cpp ${PROJECT_SOURCE_DIR}/src/iCub.cpp ${PROJECT_SOURCE_DIR}/src/iCubHand.cpp ${PROJECT_SOURCE_DIR}/src/ApproachMovementSpace.cpp ${PROJECT_SOURCE_DIR}/src/OrientedBoundingBox.cpp ${PROJECT_SOURCE_DIR}/src/GraspOptimization.cpp ${PROJECT_SOURCE_DIR}/src/Window.cpp)
  FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/include/iCub.h ${PROJECT_SOURCE_DIR}/include/iCubHand.h ${PROJECT_SOURCE_DIR}/include/ApproachMovementSpace.h ${PROJECT_SOURCE_DIR}/include/OrientedBoundingBox.h ${PROJECT_SOURCE_DIR}/include/Window.h)
  set(GUI_MOC_HDRS ${PROJECT_SOURCE_DIR}/include/GraspOptimization.h ${PROJECT_SOURCE_DIR}/include/Window.h)
  set(GUI_UIS ${PROJECT_SOURCE_DIR}/ui/iCubSimulator.ui)
  set(CMAKE_CXX_FLAGS "-Wall -std=c++11 -lpthread")

  SimoxQtApplication(${PROJECT_NAME} "${SRCS}" "${INCS}" "${GUI_MOC_HDRS}" "${GUI_UIS}")
ENDIF()

目前,我想使用一个名为 BayesOpt 的额外贝叶斯优化库:http://rmcantin.bitbucket.org/html/ .而且我不知道如何正确修改我的 cmake 文件以包含此库。

在谷歌、教程和其他问题的帮助下,我尝试自己做这件事,但没有成功。

我希望有人能帮我解决这个问题。

提前致谢!

最佳答案

要使用外部库,您需要:

  • 使库中的头文件可访问:

    INCLUDE_DIRECTORIES( includePath )
    

includePath 是您的贝叶斯优化库包含文件夹(.h 文件所在的位置)

  • 与图书馆的链接。为此,只需添加:

    TARGET_LINK_LIBRARIES(${PROJECT_NAME} mylib)
    

myLib 是您的贝叶斯优化库 .lib 文件或 .so 文件

也许您首先必须编译“贝叶斯优化库”

如果库已正确安装在您的环境中,则可以使用 CMake find_package 命令找到它,但我不熟悉它,我更喜欢处理事情按照建议手动操作。

关于c++ - 将外部库添加到 cmake 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308951/

相关文章:

c++ - 扩展字符串中的控制字符

c++ - 将python代码转换为c++

c++ - 在 Xcode 上编译时出现错误

java - 如何在 KUKA LBR iiwa 上激活重力补偿

c - 事件机器人 - 视差 - 使用传感器移动机器人 - C 编程

c++ - 清除任何交易

macos - 用于 mac os x 的 CMake 2.8.10 安装无法创建符号链接(symbolic link)

c++ - 在 Windows 10 中构建 OpenCV 时出现 Qt 和 cvv 的链接错误

linux - cmake:如何抑制 "Entering directory"消息?

image-processing - 如何将 USB 网络摄像头连接到 ev3?