当前位置: 首页 > news >正文

CMake学习笔记(一)一个最简单的CMakeLists嵌套示例

目录

1 mkdir project_macro

2 在project_marco中建立CMakeLists.txt

3 建立专门的src文件夹

4 在src中添加main.cpp和CMakeLists.txt

5 回到project_macro目录,建立build文件夹

6 进入build 文件夹,开始cmake

7 在build文件夹里执行make指令

8 make之后,你将在bin文件夹里发现结果文件main


1 mkdir project_macro

2 在project_marco中建立CMakeLists.txt

cd project_macro
touch CMakeLists.txt

 CMakeLists.txt内容:

PROJECT(hello)
ADD_SUBDIRECTORY(src bin)

 这里,src文件夹需要稍后手动建立,因为在cmake之前,src里面要放进去源码。但是bin文件夹不需要手动建立,因为cmake过程中会自动建立bin。bin用来存放编译产生的结果文件。bin只是习惯的名称,你也可以换个名字,如bin1。

这里顺便讲一下ADD_SUBDIRECTORY的用法 

它的第一个输入参数是用来存放源代码的文件夹,第二个参数是用来存放编译结果的文件夹。第二个参数可以输入,也可以不输入。假如不输入,则用来存放编译结果的文件夹就是${PROJECT_BINARY_DIR} ;假如ADD_SUBDIRECTORY第二个参数有内容,比如是bin,则用来存放编译结果的文件夹就是${PROJECT_BINARY_DIR}/bin(注:${EXECUTABLE_OUTPUT_PATH}或者${LIBRARY_OUTPUT_PATH}这两个变量默认是无内容的,但是变量PROJECT_BINARY_DIR总是有内容)(见我的下一篇博客)

3 建立专门的src文件夹

mkdir src

4 在src中添加main.cpp和CMakeLists.txt

cd src

CMakeLists.txt

ADD_EXECUTABLE(main main.cpp)

main.cpp

#include <stdio.h>

int main(void)
{
	printf("123\n");
	return 0;
}

5 回到project_macro目录,建立build文件夹

cd ..
mkdir build

此时project_macro文件夹、src文件夹、build文件夹内容如下:

6 进入build 文件夹,开始cmake

cd build
cmake ..

cmake后的build文件夹内出现一些中间文件如makefile,另外ADD_SUBDIRECTORY中加入的bin也出现在build里面。但是bin里面还没有最终结果,因为还没做make:

7 在build文件夹里执行make指令

8 make之后,你将在bin文件夹里发现结果文件main

执行看结果: 

相关文章:

  • 使用Urllib库创建第一个爬虫程序
  • 创新研报 | 2024+人工智能安全报告
  • 基于javaweb(springboot+mybatis)生活美食分享平台管理系统设计和实现以及文档报告
  • OD_2024_C卷_100分_70、停车场车辆统计【JAVA】【逻辑分析】
  • 监控API的指标
  • MySQL内置函数
  • 机器学习 - save和load训练好的模型
  • PHP 读取嵌入式数据 SQLite3
  • 一个单生产-多消费模式下无锁方案(ygluu/卢益贵)
  • 数字乡村引领新风尚:科技赋能农村实现全面进步
  • 零基础机器学习(3)之机器学习的一般过程
  • GPT4.0
  • [flask]flask的路由
  • 35 跨域相关问题, 以及常见的解决方式
  • 【笔记】Hbase基础笔记
  • 刚进公司第一天-电脑环境搭建
  • 基于AT89C51单片机的智能交通灯设计
  • APS54083 大功率深度调光降压恒流驱动IC PWM 线性调光 车灯IC
  • 数据加载器
  • AI开源概览及工具使用
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读