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 ...
随机推荐
- X活手环的表盘自定义修改
文章用到的所有工具及软件成品 前言 前几天我在某宝买了一个智能手环,无奈软件中的表盘太少,所有我想着修改一下app中的资源文件. 反编译APK 这里反编译APK用apktool工具就可以. apkto ...
- Linux 使用打印机
前言 在 deepin 上打印机好使,在我的mint上不好使,简单的查看一下deepin上驱动及软件.安装上就行了. 软件及驱动 ii hpijs-ppds 3.18.12+dfsg0-2 all H ...
- pyinstaller 打包多个资源文件到一个可执行文件
前言 pyinstaller -w: 无终端状态 -F: 打包成一个可执行文件 开始 假设 main.py 脚本调用 test.mp4视频文件(main.py和test.mp4在同一级目录),那么将在 ...
- php+nginx环境搭建
PHP安装教程参考:https://www.cnblogs.com/kyuang/p/6801942.html 1.安装基础环境: yum -y install gcc bison bison-dev ...
- 关于Qt的QPixmap中不支持jpg文件格式的问题
问题 Qt部分版本存在不支持jpg,JPEG等图像格式的问题 qDebug()<<QImageWriter::supportedImageFormats(); 这行代码可以查看所支持的图像 ...
- C++编程笔记(STL学习)
一.顺序容器 1.1.vector 1.2.dequeue 1.3.list 二.关联性容器 2.3.set 2.3.map 三.算法 3.1.遍历算法(for_each ...
- 多种方法实现单例模式 pickle模块
目录 单例模式 类方法@classmethod实现 元类实现 模块实现 装饰器实现 双下call.反射实现 pickle序列化模块 单例模式 比如系统调用打印机,不管你要打印几次,都是调用同一个打印机 ...
- utf-8与utf8mb4与base64和md5
utf-8与utf8mb4的区别 utf8--->utf-8,mysql字节的,两个字节表示一个字符--->生僻字,表示存不了 utf8mb4-->utf-8,最多4个字节表示一个字 ...
- loadrunner11汉化时提示模块插件无法注册的解决方法
安装汉化程序时,关闭杀毒软件.
- 时隔3个月,Uber 再遭数据泄露...
在今年9月,Uber 就发生过一起数据泄露事件,尽管黑客并无意发动大规模攻击或以此来获取巨额利益,但其成功获取对 Uber 所有敏感服务的完全管理员访问权限仍令人后怕.而在上周,名为"Ube ...