将外部库添加到cmake项目中

问题描述 投票:1回答:1

我是来自特尔尼科高等学院的机器人专业的学生,​​在我的项目中使用外部库时遇到了麻烦。

我使用一个名为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文件以包括该库。

我尝试自己做,在Google,教程和其他问题的帮助下,但没有成功。

我希望有人可以帮助我解决这个问题。

提前感谢!

c++ cmake robotics
1个回答
0
投票

要使用外部库,您将需要:

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

    INCLUDE_DIRECTORIES( includePath )
    

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

  • 与库链接。为此,只需添加:

    TARGET_LINK_LIBRARIES(${PROJECT_NAME} mylib)
    

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

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

[如果您的环境中正确安装了该库,可以使用CMake find_package命令找到它的方法更简单,但是我并不熟悉,我更喜欢像建议的那样手动处理。] >

© www.soinside.com 2019 - 2024. All rights reserved.