之前在Linux下写的C/C++代码基本都是单源文件的,所以编译的时候只要执行如下代码就可以执行编译或者交叉编译
gcc -o app test.c //编译
arm-linux-gcc -o app test.c //交叉编译
但是总不能一直都把代码放在一个源文件下吧,不仅不美观,可读性也不好,所以模块化编程是很有必要的,在Windows下有很多的集成IDE,写好代码点下Build就好了,当然Linux下也是有的,但是没有用命令行编译装13啊,所以写Makefile是很有必要的,但是Makefile太难学了,然后就考虑用其他工具生成Makefile ,我知道的有CMake和QMake。今天下暴雨,所以就学习了下CMake,我使用的系统是Ubuntu 16.04LTS,然后应该是默认安装了cmake工具的可以使用以下命令查看cmake的版本
cmake --version //查看版本号
cmake version 3.5.1 //返回的版本号
然后就可以写点小代码测试下了,先新建文件夹,在src下存放源文件 include下存放头文件 build下进行编译
mkdir test #新建工程文件夹
cd test #进入工程文件夹
mkidr src include build #新建 源文件头文件 编译 文件夹
touch CMakelists.txt #新建CMakelists.txt 文件夹
使用tree命令可以查看工程文件结构,我的工程文件结构如下:
tree //查看文件树
tree -L n //查看指定层的文件树
lszl@lszl:~/serial/c++/test$ tree -L 2
.
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ ├── cmake_install.cmake
│ ├── Makefile
│ └── test
├── CMakeLists.txt
├── include
│ └── display.h
└── src
├── display.cpp
└── main.cpp
工程文件下需要自己编写的文件只有如下4个:main.cpp dispaly.cpp dispaly.h CMakelists.txt直接贴出CMakelists.txt的代码
#指定cmake的最低版本
cmake_minimum_required(VERSION 2.8)
#指定项目名称
project(test)
#指定头文件搜索路径
include_directories(include)
#查找指定目录下的所有源文件
aux_source_directory(src DIR_SRC)
#指定编译器
set(CMAKE_GENERATOR g++)
#编译可执行程序 指定编译 test即最终生成的可执行文件名称
add_executable(test ${DIR_SRC})
然后display.cpp 和 display.h 是很简单的一个模块的源文件和头文件
之后就是进行工程文件编译了具体操作如下:
cd build //进入build文件夹下
cmake .. //使用CMake工具生成Makefile
make //调用Makefile生成可执行文件
ls //查看文件
./test //执行可执行文件 test是在CMakelists.txt中设定
这是我今天自己学习做的记录,很基础很基础,不喜勿喷