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.头文件
#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.源文件
#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