cmake学习笔记1–单文件编译(霜之小刀)
欢迎转载和引用,若有问题请联系
若有疑问,请联系
Email : lihn1011@163.com
QQ:2279557541
本文参考了http://blog.csdn.net/piaoxuelibin/article/details/17535737的文章,在此表示感谢
前言
cmake确实是不得不学了,以前只是为了编译别人的项目,只要知道,cmake -xxxx就把库编出来用就行了,但是现在的项目需要自己写cmake,那么就必须要开始学习了,那么今天就是第一天的学习。
文件以及目录
+test
|-main.c
|-CMakeLists.text
|+build
其中
test //项目放置的目录
main.c //源文件
CMakeLists.txt //cmake的项目必须依赖的文件,用于描述cmake如何运行
build //用于编译的位置,所有的中间文件都会在该目录下产生,不会“污染源码”
main.c的内容就是最经典的hello word
#include <stdio.h>
int main()
{
printf("hello");
return 0;
}
这些源码没啥好解释的
CMake的关键文件CMakeLists.txt
set(SRC_LIST main.c)
add_executable(hello ${SRC_LIST})
其中
set(SRC_LIST main.c)
就是说main.c就是要编译的源文件
add_executable(hello ${SRC_LIST})
就是说生成一个exe为hello的源文件。
简单的看下
set就像是一个函数,有两个参数,用空格划分,然后把第二个参数作为值赋值给第一个参数,也就是把main.c作为SRC_LIST的内容。
add_executable也是一个函数,意思是说要添加一个可执行文件,然后可执行文件的源码为SRC_LIST的内容。
如何使用CMake进行编译
1.进入build目录
2.执行cmake ..
3.make
这里解释下
为什么要有个build目录?
其实build目录不是必须的,但是为了让代码文件区域比较“干净”,我们希望编译时候的中间文件不要在源码区域内,所以建了一个专门存放编译文件的目录,编译时都在该目录下进行
cmake ..是什么意思?
cmake ..中的..其实就是制定CMakeLists.txt所在的路径。因为当前路径为build目录下,所以CMakeLists.txt得路径就在上一层目录
不是用cmake编译么,为什么又要make?
其实。。。cmake就是用来生成makefile的
因为。。。makefile真心难写。。。至少我学起来,简单的很容易,复杂点的话,我会崩溃的~
总结
这就是我第一次了解cmake,写了个简单到不能再简单的demo。