小结:
从上面简单的示例我们可以看出,Cmake所有的语句都是写在一个名为"CMakeLists.txt"的文本文件里面,所以完成一个工程用cmake管理的完整步骤如下:
1、先建立CMakeLists.txt(这跟我们用makefile来管理工程一样,都有一个特殊的文件来专门书写工程管理代码的,cmake也不例外,使用CMakeLists.txt文本文件来专门书写代码管理工程项目)。
2、然后进行往CMakeLists.txt写配置,具体简单配置参考上面的形式写,复杂的配置,我们会在下面进行演示讲解的。
3、接着使用命令"cmake .",这里必须是CMakeLists.txt同级目录下执行这个命令哈,生成makefile等文件
4、最后使用make命令进行工程编译,进而生成可执行文件。
3、同一个目录有多个源文件:
这里我们在当前目录再添加两个文件:test1.c和test1.h。test1.c文件内容如下:
#include <stdio.h>
#include "test1.h"
void func(int a)
{
printf("a=%d",a);
}
test1.h里面的内容如下:
#ifndef _TEST1_H
#define _TEST1_H
void func(int a);
#endif /* _TEST1_H */
然后在main。c里面进行调用func()这个函数:
#include <stdio.h>
#include "test1.h"
int main(void)
{
func(6);
printf("TXP嵌入式");
return 0;
}
然后这个时候我们的CMakeLists.txt里面书写形式肯定要改了:
cmake_minimum_required (VERSION 2.8)
project (main)
add_executable(main main.c test1.c)
最终结果如下:
root@txp-virtual-machine:/home/txp/test# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/txp/test
root@txp-virtual-machine:/home/txp/test# make
Scanning dependencies of target main
[ 50%] Building C object CMakeFiles/main.dir/main.c.o
[100%] Building C object CMakeFiles/main.dir/test1.c.o
Linking C executable main
[100%] Built target main
root@txp-virtual-machine:/home/txp/test# ls
1 CMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt main main.c Makefile test1.c test1.h
root@txp-virtual-machine:/home/txp/test# ./main
a=6
TXP嵌入式
小结:
上面的CMakeLists.txt的写法,你会注意到add_executable(main main.c test1.c)多了一个源文件(你可以把源码看作成加工的原材料,在makefile里面也是这样来理解目标文件的生成!),所以如果你还要往当前目录下添加源文件的话,在书写CMakeLists.txt文本文件时,直接在第三个语句里面添加源文件;不过这种方式有缺陷,比如说,如果当前文件下有几百个源文件,这个时候你不可能一个个去手写敲吧,不然这样就又回到了原始社会,就不能体现cmake的优越性出来了!更多用法,且听下回细解!