Cmake编译工程

Cmake目录结构:项目主目录中会放一个CmakeList.txt的文本文档,后期使用cmake指令时候,依赖的就是该文档

1.包含源文件的子文件夹包含Cmakelist.txt文件时,主目录的Cmakelists.txtx要通过add_subdirector添加子目录

2.包含源文件的子文件夹不包含Cmakelist.txt文件时,子目录编译规则,体现在目录中的CMakeLists.txt

7.8.1

1.内部构建:不推荐使用

内部构建会在主目录下,产生一大推中间文件,这些中间文件并不是我们最终所需要的,和工程文件放在一起时,会显得比较杂乱无章

##内部构建

#在当前目录下,编译主目录中的CMakeList.txt文件 文件生成Makefile文件

#执行make命令,生成目标文件

make

2.外部构建:推荐使用

将编译输出的文件与源文件放在不同的目录下,进行编译,此时,编译生成的中间文件,不会跟工程源文件进行混淆

##外部构建步骤

#1.在当前目录下,创建一个build文件,用于存储生成中间文件

mkdir build

#2.进入build文件夹内

cd build

#3.编译上一级目录中的Cmakelists.txt,生成Makefile文件及其他文件

cmake .. #..表示上一级目录

#4.执行make命令,生成可执行程序

make

7.7Cmake代码实践

7.7.1 同一目录下的文件进行编译

2.CMakelist.txt文件

3.内部构建

7.7.2 分文件编译

1.头文件

cpp 复制代码
#ifndef SWAP_H
#define SWAP_H

#include<iostream>
//声明一个交换
class MY_swap
{
private:
    int a;
    int b; 
public:

    MY_swap(int a,int b)
    {
        this->a=a;
        this->b=b;
    }

    void run();

    void printInfo();

};


#endif

2.源文件

cpp 复制代码
#include"swap.h"
#include<iostream>
using namespace std;


void MY_swap::run()
{
    int temp=a;
    a=b;
    b=temp;
}

void MY_swap::printInfo()
{
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
}

4.分文件编译使用g++编译器生成可执行

5.创建工程管理文件CmakeList.txt

相关推荐
西安同步电子16 分钟前
时统卡驱动踩坑:Windows 和 Linux 下时间同步的底层差异
linux·stm32·单片机
虚无的纽扣16 分钟前
【Linux】线程互斥:多线程改同一个变量,到底会出什么问题
linux·服务器·1024程序员节
qetfw27 分钟前
Bash 函数与流程控制:read、if、for、case 验证
linux·前端·javascript·bash
m0_5474866628 分钟前
《Linux操作系统基本原理与应用》全套PPT课件2026
linux·linux系统
姜鱼问生42 分钟前
大屏突然 502?一次 Nginx Buffer 溢出引发的血案:upstream sent too big header
运维
深圳市恒星物联科技有限公司1 小时前
排水管网监测后期运维成本高吗?成本构成与控制策略分析
运维·缓存
CRMEB系统商城1 小时前
家电零售的供应商协同与物流提效
java·开发语言·人工智能·小程序·1024程序员节
Shadow(⊙o⊙)1 小时前
LangChain 自定义工具全解析:从 @tool 到 bind_tools 的完整调用链路
java·服务器·前端·1024程序员节
Pointer Pursuit1 小时前
Linux环境变量
linux·服务器·c语言·链表·1024程序员节
王大师王文峰1 小时前
Java+AI 面试题(二):业务场景设计 10 例【客服机器人、合同审查、Text2SQL、告警降噪、成本优化】场景题答法与追问链路
java·开发语言·人工智能