1.

add_exectuable 告诉工程生成一个可执行文件
add_library 则告诉生成一个库文件,构建动态库和静态库

eg.

#生成应用程序 hello
ADD_EXECUTABLE(hello ${SRC_LIST})

eg.

project(helloso)
set(LIB_SRC hello.c)
add_library(${PROJECT_NAME} SHARED ${LIB_SRC})//动态库

1.1 参数也可以使用分号来进行分割

eg.

ADD_EXECUTABLE(t1 main.c t1.c)可以写成 ADD_EXECUTABLE(t1 main.c;t1.c)

1.2 ADD_LIBRARY

ADD_LIBRARY(libname [SHARED|STATIC|MODULE][EXCLUDE_FROM_ALL] source1 source2 … sourceN)

不需要写全 libhello.so,只需要填写 hello 即可,cmake 系统会自动生成libhello.X的类型有三种:

  • SHARED,动态库
  • STATIC,静态库
  • MODULE,在使用 dyld 的系统有效,如果不支持 dyld,则被当作 SHARED 对待。
  • EXCLUDE_FROM_ALL 参数的意思是这个库不会被默认构建,除非有其他的组件依赖或者手
    工构建。

eg.

#构建一个 libhello_static.a 的静态库了
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})

1.3 SET

引号SET(SRC_LIST “func.c”)

忽略掉 source 列表中的源文件后缀

#cmake 会自动的在本目录查找 main.c 或者 main.cpp
ADD_EXECUTABLE(t1 main)

1.4 动态库版本号

SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1)
VERSION 指代动态库版本,SOVERSION 指代 API 版本。

eg.

在 build/lib 目录会生成:
libhello.so.1.2
libhello.so.1->libhello.so.1.2
libhello.so ->libhello.so.1

cmake (2)build方面的指令相关推荐

  1. cmake (2)路径指令

    1. INCLUDE_DIRECTORIES引入头文件搜索路径 INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 -) 这条指令可以用来向工程 ...

  2. 【CMake】cmake的add_custom_command和add_custom_target指令

    在很多时候,需要在cmake中创建一些目标,如clean.copy等等,这就需要通过add_custom_target来指定.同时,add_custom_command可以用来完成对add_custo ...

  3. C++学习(四四二)cmake ninja build.ninja rules.ninja

    build.ninja rules.ninja由cmake生成 ninja复制执行build.ninja rules.ninja 1.build.ninja build.ninja制定参数,比如链接的 ...

  4. catkin_make, cmake, catkin build区别

    文章目录 1 catkin的历史 1.1 Legacy Catkin Workflow 1.2 Isolated Catkin Workflow 1.3 Parallel Isolated Catki ...

  5. cmake编译build

    基于cmake编译C++程序,书名<视觉SLAM十四讲> 1.环境需求 ubuntu g++ cmake 安装方式: sudo apt install g++/cmake 2.helloS ...

  6. cmake (2)其他指令

    1. cmake最低版本需求,不加入此行会受到警告信息 eg. #cmake最低版本需求,不加入此行会受到警告信息 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

  7. CMake中include指令用法介绍

    转载于:  https://blog.csdn.net/liitdar/article/details/81144461 本文主要介绍CMake中include指令的用法. 1 概述 引用CMake官 ...

  8. 在Ubuntu18.04下的Cmake使用记录

    (1)首先是安装cmake.命令如下: sudo apt-get install cmake (2)创建一个源程序,1.cpp如下:(1.cpp的位置是位于hoem/ysh/code) #includ ...

  9. cmake 常用变量和常用环境变量查表手册

    cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定 ...

最新文章

  1. 区块链从一夜暴富到一夜暴“负”的辛酸史
  2. parentViewController
  3. 新字符设备驱动实验(自动分配设备号、自动创建应用层设备节点、新字符设备注册到内核的结构体)
  4. %3c php foreach%3e,PHP 数组函数-数组排序
  5. 首批华为鸿蒙系统课程开发者
  6. SpringBoot实战(十):统一异常处理
  7. winedt (latex 编译器)解决中文的问题(CJK CTEX)
  8. daocloud创建mysql_DaoCloud体验-使用node构建应用程序
  9. 【渝粤教育】国家开放大学2018年春季 0266-21T设计构成 参考试题
  10. error LNK2019: unresolved external symbol __imp__JNI_CreateJavaVM@12 referenced in function _wmaim
  11. 【浙大第19届校赛:B】Even Number Theory (数论n!中有多少个质因子2+java大数)
  12. ENVI5.3安装中国国产卫星支持工具
  13. OneNote笔记备份
  14. Jupyter Notebooks学习分享
  15. 迭代器、模块的简单总结
  16. 右键菜单“新建”的修改
  17. 复利计算--结对1.0,做汉堡,结对2.0-复利计算再升级
  18. 学习Hadoop课程
  19. C语言中字符串用strcmp和==比较的问题
  20. 怎样区分S50卡和S70卡-----通过判断SAK值

热门文章

  1. 41.简单说一下noexecpt关键字
  2. java.util.NoSuchElementException: No value present
  3. jQuery-层次选择器的学习
  4. Java 洛谷 P2141 珠心算测验
  5. c语言间接级别不同_例9:C语言实现成绩的等级判别
  6. string转换为bigdecimal_SO面试题09:如何将String转换为Int?
  7. python爬虫专家_Python爬虫入门教程 27-100 微医挂号网专家团队数据抓取pyspider
  8. 定位漏水与非定位漏水的区别?
  9. AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会【IT新未来: 5G与人工智能】内容概要
  10. Dataset之Rotten Tomatoes:Rotten Tomatoes影评数据集简介、下载、使用方法之详细攻略