CMakeList汇总
cmake_minimum_required(VERSION 2.8.3)
PROJECT (HELLO) #工程名
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
SET( MAIN_LIST main.cpp ) #定义一个变量名
#SET(MAIN_LIST "${MAIN_LIST} -std=c++11")
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})#显示信息
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})#显示信息
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
SET(PICAR_SERVER
${DIR_SRCS}
)
ADD_EXECUTABLE(${PROJECT_NAME} ${PICAR_SERVER})
ADD_EXECUTABLE(hello ${MAIN_LIST} ) #hello 为编译后的目标文件名
ADD_EXECUTABLE(hello main.cpp) #hello 为编译后的目标文件名
ADD_SUBDIRECTORY ( source_dir [ binary_dir ] [ EXCLUDE_FROM_ALL ] )
#向当前工程添加存放源文件的子目录 并可以指定目标二进制存放的位置 EXCLUDE参数的含义是将这个
目录从编译过程中排除,比如example,可以就工程构建完成后,单独进来构建
INCLUDE_DIRECTORIES( [AFTER|BEFORE] [SYSTEM] dir1 dir2 ... )
#向当前工程添加多个指定的头文件搜索路径,路径之间用空格分割
include_directories(
${catkin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/sdk/include
${PROJECT_SOURCE_DIR}/sdk/src
)
TARGET_LINK_LIBRARIES( target library1 library ... )
#添加共享库链接 可写成hello,也可写成libhello.so
#使用了外部库,事先不知道头文件和链接库的位置
find_package(<name>) 会在模块路径中寻找name.cmake。
例:fing_package(BZip2)
if(BZIP2_FOUND)
include_directories( ${BZIP_INCLUDE_DIR} )
target_link_libraries( 工程名 ${BZIP2_LIBRARIES} )
endif(BZIP2_FOUND)
find_library( libpaths libhello.so lib )
找到自定义的库,不需要安装 libpaths为变量 libhello.so为要找的库, lib为路径
target_link_libraries( usehello ${libpaths} )
将找到的库的变量链接到工程
make clean 可对构建结果进行清理
建立共享库
SET(LIBHELLO_SRC hello.c)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
ADD_LIBRARY( libname [ SHARED|STATIC|MODULE ] [EXCLUDE_FROM_ALL] source1 source2 ... )
#SHARED 动态库 STATIC静态库 MODULE不常用
INSTALL(TARGETS hello hello_static #TARGETS为二进制、动态库、静态库
LIBRARY DESTINATION lib #lib为相对位置,针对于DCMAKE_INSTALL_PREFIX=/usr 下
ARCHIVE DESTINATION lib)
#可以使用make install命令将生成的libhello.so libhello_static.a 安装到/usr/lib下。
其中ARCHIVE是静态库的关键字,LIBRARY是动态库的关键字
INSTALL(FILES hello.h DESTINATION include/hello) #FILES普通文件安装,
#可以将hello.h 安装到/usr/include/hello中
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
CMakeList汇总的更多相关文章
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 异常处理汇总 ~ 修正果带着你的Net飞奔吧!
经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...
- UWP开发必备:常用数据列表控件汇总比较
今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...
- Oracle手边常用70则脚本知识汇总
Oracle手边常用70则脚本知识汇总 作者:白宁超 时间:2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规 ...
- Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
- Vertica 数据库知识汇总篇
Vertica 数据库知识汇总篇(更新中..) 1.Vertica 集群软件部署,各节点硬件性能测试 2.Vertica 创建数据库,创建业务用户测试 3.Vertica 数据库参数调整,资源池分配 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 关于DDD的学习资料汇总
DDD(Domain-Driven Design)领域驱动设计,第一次看到DDD是在学习ABP时,在其中的介绍中看到的.what,DDD是个什么鬼,我不是小白,是大白,没听过.于是乎,度娘查查查,找到 ...
- Oracle 列数据聚合方法汇总
网上流传众多列数据聚合方法,现将各方法整理汇总,以做备忘. wm_concat 该方法来自wmsys下的wm_concat函数,属于Oracle内部函数,返回值类型varchar2,最大字符数4000 ...
- LeetCode All in One 题目讲解汇总(持续更新中...)
终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 477 Total Hamming Distance ...
随机推荐
- pagehelper踩坑记之分页乱套
我们在使用数据库进行查询时,很多时候会用到分页展示功能,因此除了像mybatis这样的完善的orm框架之外,还有pagehelper这样的插件帮助减轻我们的工作. pagehelper的实现方式是,不 ...
- 【Shell案例】【awk匹配、grep查找文件内的字符串】6、去掉空行(删除空行)
描述写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行示例:假设 nowcoder.txt 内容如下:abc 567 aaabbb ccc 你的脚本应当输出:abc567aaab ...
- 【消息队列面试】6-10:Rebalance机制、副本同步机制、架构设计、zk的作用、kafka的高性能
六.简述kafka的Rebalance[偏向实战,有难度] 1.背景 kafka日志:在消息量大.高并发时,经常会出现rebalance中 rebalance会影响kafka性能,会阻塞partiti ...
- 利用node快速生成脚本
整理框架时突然发现两个文件从来没有使用过,删除的瞬间仿佛get到了用处. fs 可用于与文件系统进行交互模块 path 提供一些实用工具,用于处理文件和目录的路径 process.argv 返回一个数 ...
- Nmap常用方法
1.扫描单个目标地址 在Nmap后面直接添加目标地址即可扫描 nmap 目标地址 2.扫描多个目标地址 如果目标不在同一网段,或在同一网段但不连续且数量不多,可以使用该方法进行扫描 nmap ...
- PPT排版技巧
- flutter系列之:flutter中listview的高级用法
目录 简介 ListView的常规用法 创建不同类型的items 总结 简介 一般情况下,我们使用Listview的方式是构建要展示的item,然后将这些item传入ListView的构造函数即可,通 ...
- [OpenCV实战]22 使用EigenFaces进行人脸重建
目录 1 背景 1.1 什么是EigenFaces? 1.2 坐标的变化 2 面部重建 2.1 计算新面部图像的PCA权重 2.2 使用EigenFaces进行面部重建 3 参考 在这篇文章中,我们将 ...
- [seaborn] seaborn学习笔记4-核密度图DENSITYPLOT
文章目录 4 核密度图Densityplot 1. 基础核密度图绘制 Basic density plot 2. 核密度图的区间控制 Control bandwidth of density plot ...
- 「Python实用秘技12」像导入模块一样导入ipynb文件
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第12 ...