使用CmakeLists应该知道的一些知识
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应该知道的一些知识相关推荐
- cmakelists语法_CMakeList语法知识
在写这篇文章之前开始是想一些shell脚本与Makefile的一些基础语法知识.但是又觉得太过基础.关于Liunx shell脚本可以看看教程http://c.biancheng.net/linux_ ...
- Cmake知识----编写CMakeLists.txt文件编译C/C++程序
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...
- ROS知识: vanilla(香草) CMakeLists.txt 的语法
(catkin/CMakeLists.txt - ROS Wiki) 前言 首先,对于学习ROS,CMakeLists.txt 的语法非常重要:如果不懂将无法开发!而要想明白 vanilla(香草) ...
- 一文详解CMakeLists文件编写语法规则详解
作者丨zhanghm1995@blog 来源丨https://blog.csdn.net/zhanghm1995/article/details/80902807 编辑丨3D视觉工坊 基本语法规则 C ...
- C语言编译:CMakeLists.txt语句【01】
CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的 Makefile 或者 project 文件,CMake 并不直接建构出最终的软件, ...
- 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++. ...
- Java 基础知识总结(下)-王者笔记《收藏版》
上一篇 Java基础知识学习总结之(上) 下一篇 Java 集合容器篇面试题 (上) java毕业设计项目<100套>推荐 毕设/私活/大佬必备,一个挣钱的开源前后端分离脚手架 2W字梳 ...
- Ubuntu下使用cmake结合CmakeLists.txt生成makefile文件并进行编译
转自1:https://www.cnblogs.com/cv-pr/p/6206921.html 转自2:https://blog.csdn.net/qqwangfan/article/details ...
- c++ ftp服务端_重磅干货||五万字长文总结:C/C++ 知识(下篇)
结识更多同行,共同讨论"嵌入式"技术.欢迎添加社区客服微信,备注发送"电源+公司名(学校)+职位(专业)"拉您入群. 回顾上篇:五万字长文总结:C/C++ 知识 ...
最新文章
- 手写简版spring --8--Aware感知容器对象Aware感知容器对象
- 【Python基础】当变量有值时,为什么会出现UnboundLocalError?
- 随心篇第九期:我不愿一无所有
- python中获取目录下所有文件名以及读取一个文件内的每一行
- 01-10 Linux-bash编程
- 基于Matlab的标记分水岭分割算法
- python数据包pandas_python | 数据分析(二)- Pandas数据包
- [转]winform控件webbrowser和js脚本互调
- Linux内核配置.config文件
- 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(22):方阵函数在微分方程组中的应用
- 一纬度横直线等于多公里_【地理】高中地理必修一知识点总结,考前必看
- UE编辑器重要快捷键总结
- HRZ学英语(类似尺取)
- 解决谷歌浏览器打不开
- linux 可视化分区,可视化linux块设备的工具(分区,LVM PV,LV,mdadm设备……)
- 在WeChat上搭建ChatGpt机器人
- 写给自己,学习如逆水行舟,不进则退
- r语言 求几个数的最小公倍数_一课研究之“最小公倍数教学后学生知识技能情况分析”(20190417)...
- 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用
- 如何配置高性能的计算机,笔记本电脑如何设置电源计划为高性能