Cmake:用来构建工程的一个工具,目的就是生成makefile
一个简单的使用-用很少的语句-本地构建
1.编写源代码。mian.c
vi main.c
# 写入一下内容
#include<stdio.h>
int main()
{
printf("hellow\n");
return 0;
}
2. 编写CmakeLists.txt,注意大小写
vi CMakeLists.txt
# 写入一下内容
PROJECT(HELLOW)
SET(SRC_LIST main.c)
ADD_EXECUTABLE(hellow ${SRC_LIST})
3. 使用cmke生成makefile文件,用makefile编译生成可执行程序。
注意:如果不新加源文件,不用重新生成Makefilw文件,修改代码执行make就行了
cmake . # 注意一定要加 . 表示当前目录
ll # 查看文件 有Makefile文件生成
make # 执行makefile编译,生成可执行程序
# 运行程序
./hellow
# 输出
hellow
2.一个比较复杂的构建-外部构建
把构建所产生的文件都放在一个单一的目录下面,如我在源码路径下面新建一个build文件夹。把构建所产生的文件都放在这里。
# 和上面一样新建一个这样的文件目录
wang@ubuntu:~/Desktop/cmake/hellow$ ls
build CMakeLists.txt main.c
wang@ubuntu:~/Desktop/cmake/hellow$ tree
.
├── build
├── CMakeLists.txt
└── main.c
1 directory, 2 files
# 执行cmake生成Makefile 文件
wang@ubuntu:~/Desktop/cmake/hellow$ cd build/
wang@ubuntu:~/Desktop/cmake/hellow/build$ ls
wang@ubuntu:~/Desktop/cmake/hellow/build$ cmake ..
...
wang@ubuntu:~/Desktop/cmake/hellow/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
wang@ubuntu:~/Desktop/cmake/hellow/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
wang@ubuntu:~/Desktop/cmake/hellow/build$ make
# 执行可执行文件
wang@ubuntu:~/Desktop/cmake/hellow/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake hellow Makefile
wang@ubuntu:~/Desktop/cmake/hellow/build$ ./hellow
hellow world
3.一个更加复杂的构建-真的像是一个工程
这个构建包含bin文件夹,readme,doc文件等等,,比较正式
4. 安装命令-INSTALL
卸载最外层的CMakeLists.txt就行了
# FILES:表示安装的文件;DESTINATION:表示安装的目标路径
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/)
# PROGRAMS :安装不是可执行文件的东西,如脚本
INSTALL(PROGRAMS runhellow.sh DESTINATION bin)
# DIRECTORY :表示安装目录
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake)
5.构建动态库和静态库命令
6.安装静态库和动态库,并写程序调用
7. 链接已经安装的库
# 工程名字
PROJECT(HELLOW)
# 定义变量
SET(SRC_LIST main.c)
# 添加头文件搜索路径
INCLUDE_DIRECTORIES(/usr/local/include/json-c/)
# 添加链接库的搜索路径
LINK_DIRECTORIES(/usr/local/lib/)
# 生成可执行文件
ADD_EXECUTABLE(main ${SRC_LIST})
# 链接库 main是自己生成的可执行程序
TARGET_LINK_LIBRARIES(main libjson-c.a)