Cmake使用方法

命令:ccmake directory(含有CmakeLists.txt)             #配置CmakeLists.txt里面相关的变量,一般不需要

命令:cmake directory(含有CmakeLists.txt)              #根据CmakeLists.txt生成Makefile文件

命令:Make                                                                    #执行Makefile

基本结构

依赖CMakeLists.txt文件,项目主目标一个,主目录中可指定包含的子目录

在项目CMakeLists.txt中使用project指定项目名称,add_subdirectory添加子目录

子目录CMakeLists.txt将从父目录CMakeLists.txt继承设置

Cmakelists文件命令

指定编译包含源文件

方法1:

add_library(demo demo.cpp test.cpp util.cpp)

方法2:先搜索文件夹在添加文件

aux_source_directory(. SRC_LIST)     # 搜索当前目录下的所有.cpp文件
add_library(demo ${SRC_LIST})

设置编译输出类型

add_executable(demo demo.cpp)            # 生成可执行文件   exe    可执行
add_library(common STATIC util.cpp)     # 生成静态库         .lib    .a
add_library(common SHARED util.cpp)     # 生成动态库或共享库     .dll    .so

设置链接库搜索目录

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs)

列表变量操作

List(关键字 <list> …<index>…<element>…)

关键字

LENGTH            返回list的长度

GET               返回list中index的element到value中

APPEND             添加新element到list中

FIND            返回list中element的index,没有找到返回-1

INSERT           将新element插入到list中index的位置

REMOVE_ITEM       从list中删除某个element

REMOVE_AT        从list中删除指定index的element

REMOVE_DUPLICATES         从list中删除重复的element

REVERSE         将list的内容反转

SORT            将list按字母顺序排序

查找安装好的库

find_package(name  REQUIRED)

REQUIRED   找不到name就报错停止cmake处理

执行../share/cmake-3.16/Modules下Find<name>.cmake文件

CMAKE_MODULE_PATH

目录列表,分号分割,find_package和include命令会使用。默认为空,由工程设置

执行一个cpp文件(main)

file(READ “…/vtkRequireLargeFilesSupport.cxx"  VTK_REQUIRE_LARGE_FILE_SUPPORT_FILE)
check_cxx_source_runs("${VTK_REQUIRE_LARGE_FILE_SUPPORT_FILE}"VTK_REQUIRE_LARGE_FILE_SUPPORT)

Cmake参考文档路径

https://cmake.org/cmake/help/latest/index.html

使用CmakeLists应该知道的一些知识相关推荐

  1. cmakelists语法_CMakeList语法知识

    在写这篇文章之前开始是想一些shell脚本与Makefile的一些基础语法知识.但是又觉得太过基础.关于Liunx shell脚本可以看看教程http://c.biancheng.net/linux_ ...

  2. Cmake知识----编写CMakeLists.txt文件编译C/C++程序

    1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...

  3. ROS知识: vanilla(香草) CMakeLists.txt 的语法

    (catkin/CMakeLists.txt - ROS Wiki) 前言 首先,对于学习ROS,CMakeLists.txt 的语法非常重要:如果不懂将无法开发!而要想明白 vanilla(香草) ...

  4. 一文详解CMakeLists文件编写语法规则详解

    作者丨zhanghm1995@blog 来源丨https://blog.csdn.net/zhanghm1995/article/details/80902807 编辑丨3D视觉工坊 基本语法规则 C ...

  5. C语言编译:CMakeLists.txt语句【01】

    CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的 Makefile 或者 project 文件,CMake 并不直接建构出最终的软件, ...

  6. c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用)

    搞不太懂gcc和cmake(qmake)等的区别 1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器, 它可以编译很多种编程语言(括C.C++. ...

  7. Java 基础知识总结(下)-王者笔记《收藏版》

    上一篇 Java基础知识学习总结之(上) 下一篇 Java 集合容器篇面试题  (上) java毕业设计项目<100套>推荐 毕设/私活/大佬必备,一个挣钱的开源前后端分离脚手架 2W字梳 ...

  8. Ubuntu下使用cmake结合CmakeLists.txt生成makefile文件并进行编译

    转自1:https://www.cnblogs.com/cv-pr/p/6206921.html 转自2:https://blog.csdn.net/qqwangfan/article/details ...

  9. c++ ftp服务端_重磅干货||五万字长文总结:C/C++ 知识(下篇)

    结识更多同行,共同讨论"嵌入式"技术.欢迎添加社区客服微信,备注发送"电源+公司名(学校)+职位(专业)"拉您入群. 回顾上篇:五万字长文总结:C/C++ 知识 ...

最新文章

  1. 手写简版spring --8--Aware感知容器对象Aware感知容器对象
  2. 【Python基础】当变量有值时,为什么会出现UnboundLocalError?
  3. 随心篇第九期:我不愿一无所有
  4. python中获取目录下所有文件名以及读取一个文件内的每一行
  5. 01-10 Linux-bash编程
  6. 基于Matlab的标记分水岭分割算法
  7. python数据包pandas_python | 数据分析(二)- Pandas数据包
  8. [转]winform控件webbrowser和js脚本互调
  9. Linux内核配置.config文件
  10. 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(22):方阵函数在微分方程组中的应用
  11. 一纬度横直线等于多公里_【地理】高中地理必修一知识点总结,考前必看
  12. UE编辑器重要快捷键总结
  13. HRZ学英语(类似尺取)
  14. 解决谷歌浏览器打不开
  15. linux 可视化分区,可视化linux块设备的工具(分区,LVM PV,LV,mdadm设备……)
  16. 在WeChat上搭建ChatGpt机器人
  17. 写给自己,学习如逆水行舟,不进则退
  18. r语言 求几个数的最小公倍数_一课研究之“最小公倍数教学后学生知识技能情况分析”(20190417)...
  19. 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用
  20. 如何配置高性能的计算机,笔记本电脑如何设置电源计划为高性能

热门文章

  1. CLR via C# 笔记系列 - clr的执行模型
  2. Silverlight初级教程系列
  3. android 返回图标,在Toolbar中添加一个返回图标
  4. 学习响应式BootStrap来写融职教育网站,Bootsrtap第五天页脚
  5. js实现获取当前周,过去和未来周的时间段日期
  6. JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用
  7. 如何在vue中使用sass
  8. 推荐一个博客,或许给技术流的自己一些启示
  9. 适合0基础的web开发系列教程-文本格式标签汇总
  10. RabbitMQ使用简述