将外部库添加到 cmake 项目
Adding an External Library to a cmake project
我是 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 文件以包含此库。
在 google、教程和其他问题的帮助下,我尝试自己完成此操作,但没有成功。
我希望有人能帮我解决这个问题。
提前致谢!
要使用外部库,您需要:
使库中的头文件可访问:
INCLUDE_DIRECTORIES( includePath )
includePath
是您的贝叶斯优化库包含文件夹(.h 文件所在的位置)
Link与图书馆。为此,只需添加:
TARGET_LINK_LIBRARIES(${PROJECT_NAME} mylib)
myLib
是您的贝叶斯优化库 .lib 文件或 .so 文件
也许您首先必须编译 "Bayesian Optimization Library"
如果您的环境中正确安装了该库,使用 CMake find_package
命令可以找到更简单的方法,但我不熟悉它,我更喜欢手动处理正如提议的那样。
我是 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 文件以包含此库。
在 google、教程和其他问题的帮助下,我尝试自己完成此操作,但没有成功。
我希望有人能帮我解决这个问题。
提前致谢!
要使用外部库,您需要:
使库中的头文件可访问:
INCLUDE_DIRECTORIES( includePath )
includePath
是您的贝叶斯优化库包含文件夹(.h 文件所在的位置)
Link与图书馆。为此,只需添加:
TARGET_LINK_LIBRARIES(${PROJECT_NAME} mylib)
myLib
是您的贝叶斯优化库 .lib 文件或 .so 文件
也许您首先必须编译 "Bayesian Optimization Library"
如果您的环境中正确安装了该库,使用 CMake find_package
命令可以找到更简单的方法,但我不熟悉它,我更喜欢手动处理正如提议的那样。