第一次写博客主要是想要记录下自己的学习,方便以后查看,以及给学习者提供一种我学习的思路以及视角吧!有不对的地方欢迎指正。
本文主要是介绍linux 下cmake的基本使用。
一 linux 命令
. 当前目录
.. 上级目录
pwd 显示当前文件夹
rm -rf 删除
rm -rf * 删除该文件下所有文件
mkdir 创建文件夹
touch 创建文件
mv 移动文件
cat 查看文件
gedit 编辑文件
echo “” >文件名 加内容到指定文件夹
cd 切换文件夹
ls显示当前文件夹下的文件
二 关于Cmake
关于CMake我这里就不过多介绍了,因为我的理解也有限,讲的也肯定没有别人清楚,所以这里附加几个链接
cmake介绍及demo http://www.hahack.com.codes/cmake/
B站搜cmake 刘贝斯up的视频
三 关于此次demo
有三个源文件main.cpp (引用printhello.cpp输出信息,并引用he.cpp计算两数之和)
addnums.cpp(计算两数之和),printhello.cpp输出信息
文件结构
├── bulid
├── CMakeLists.txt
└── src
├── CMakeLists.txt
├── he.cpp
├── he.h
├── main.cpp
├── printhello.cpp
└── printhello.h
四 开始demo
1创建所需的文件夹
ctrl alt T 打开终端
mkdir cmakelearn 创建工程文件夹
cd cmakelearn 切换至cmakelearn 文件夹
mkdir src 创建src文件夹存放源文件
mkdir bulid 创建bulid文件夹存放编译文件
touch CMakeLists.txt 创建CMakeLists.txt
2编写源程序
cd src 切换到src文件夹下
gedit 加文件名 可以打开并编辑文件,保存后回到终端 按ctrl +c退出编辑
//main.cpp #include <iostream> #include <printhello.h> #include <he.h> using namespace std; int main() { int a ,b,c; cin>>a >>b; printhello(); addnums(a,b); }
//printhello.cpp #include <iostream> using namespace std; void printhello() { cout<<"hello world!"<<endl; }
//printhello.h void printhello();
//he.cpp #include <iostream> using namespace std; void addnums(int a, int b) { cout<<a+b<<endl; }
//he.h void addnums(int a,int b);
3编写CMakeLists.txt
因为源文件存放在src文件夹下,所以需要在src文件夹下同样建立一个CMakeLists.txt
#cmakelearn下CMakeLists.txt #指定最低的版本号 cmake_minimum_required(VERSION 3.10) #工程的名字 PROJECT(HELLO) #添加src为子目录(src需包含CMakeLists和源文件),并输出可执行文件到bin文件夹下 ADD_SUBDIRECTORY(src bin)
#src下CMakeLists.txt #将当前文件夹添加到头文件的搜索路径之下 include_directories(./) #添加库 ADD_LIBRARY(printlib printhello.cpp he.cpp) #基于main.cpp 生成可执行文件hello ADD_EXECUTABLE(hello main.cpp) #将产生hello可执行文件所需的库printlib链接起来 TARGET_LINK_LIBRARIES(hello printlib)
4操作
- 切换到bulid文件夹下
- 执行cmake ..在上一级目录中执行此操作
- 执行make 输出了可执行文件到bin中
均没有报错
- cd bin 切换到bin目录下,查看,可以发现生成了hello可执行文件
- ./hello 执行可执行文件,输入两个数
五总结
本篇主要通过一个demo介绍了cmake的基本使用,没有太多的理论,主要是操作,希望对大家有启发。