linux cmake 编译总结

通常的CMakeLists结构是:

cmake_minimum_required( VERSION 2.8 )
project( projectname )
find_packages( , )
include_directories( )
add_executable( , )
target_link_libraries( , )

前两行不谈,看看find_packages

find_package写法

对于OpenCV我们是这样写的:

find_package( OpenCV 3.1 REQUIRED )
find_package( OpenCV REQUIRED ) #OpenCV2

对于g2o
 

find_package( G2O REQUIRED )

而对于ceres就很自然是这样了

find_package( Ceres REQUIRED)

总结:大部分库按find_package(库名 REQUIRED)写find_package


include_directories写法

对于OpenCV我们是这样写的:

include_directories( ${OpenCV_INCLUDE_DIRS} )

对于G2O:

include_directories(${G2O_INCLUDE_DIRS})

对于CSPARSE:

include_directories( ${CSPARSE_INCLUDE_DIR} )

eigen:

include_directories( "/usr/include/eigen3/")

那么ceres:

include_directories( ${CERES_INCLUDE_DIRS})

这里博主以为是DIR还是DIRS是看库的情况而定的,但上面几个库我把s去掉了似乎也没有什么异常。那么保险起见还是添上s吧。看这个问答:INCLUDE_DIR or INCLUDE_DIRS?

总结:include_directories(${库名_INCLUDE_DIRS})


target_link_libraries写法

库链接部分见一个例子:

target_link_libraries( 可执行文件名 ${OpenCV_LIBS} g2o_core g2o_stuff g2o_types_sba g2o_csparse_extension ${CSPARSE_LIBRARY} ${CERES_LIBRARIES})

有这几种写法:

  • 库名_LIBS
  • 库名_LIBRARY
  • 库名_LIBRARIES
    当一个库不知道该怎么写时,都试试吧。其本身怎么写也肯定是有相应的规则的。我在这里只总结这么个写法,欲知更多请学习相应的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值