CMakeLists

编译库文件

转载(总结比较全面)

CMakeList1
CMakeList2
SLAMCMakeLists

使用add_library()实现

//编译库,pointtype是在project所在的目录下的;当使用include/my_point_type.h语句时会报错,所以单独创建了一个文件夹
step1:add_library(libpoint pointtype/my_point_type.h)
//这句是解决一个报错:不知道源文件.h所使用的语言
step2:set_target_properties(libpoint PROPERTIES LINKER_LANGUAGE CXX)
//add_executable()  add_custom_target  add_library()所生成的都是target,使用target_link_libraries的方式添加依赖库
step3:target_link_libraries(libpoint ${PCL_LIBRARIES})
//NOTE:也可以不适用上面的语句,直接使用以下两行也可以,libpoint写在${PCL_LIBRARIES}之前,库和主函数都依赖于PCL。
add_executable(hello src/main.cpp )
target_link_libraries(libpoint libpoint ${PCL_LIBRARIES})

add_subdirectory

add_subdirectory(child)编译child子文件夹。
add_subdirectory(child bin) 编译结果输出到bin目录中。
详解

CMAKE_BUILD_TYPE

debug版本的项目生成的可执行文件需要有调试信息并且不需要进行优化,而release版本的不需要调试信息但是需要优化。这些特性在gcc/g++中通过编译时的参数来决定的,如果将优化程度调到最高需要设置 -O3 ,最低的是 -O0 即不做优化,添加调试信息的参数是 -g -ggdb,如果不添加这个参数,调试信息就不会被包含在生成的二进制中

详解 官网

指定c++版本

三行命令可以达到一种根据需求改变c++版本的效果

当想要指定一个特定的C++版本时,推荐使用CMASE 3.1和以后的方法是使用CXX_STANDARD、CXX_STANDARD_REQUIRED和CXX_EXTENSIONS目标属性,或者使用它们的变量等效项来指定目标默认值。可以找到完整的详细信息,但短版本如下:

cmake_minimum_required(VERSION 3.1)
project(Example)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# ... Define targets, etc. as usual

推荐
https://www.coder.work/article/30130

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值