侵权投诉
订阅
纠错
加入自媒体

cmake学习总结(一)

2020-06-28 09:33
TXP嵌入式
关注

小结:

从上面简单的示例我们可以看出,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的优越性出来了!更多用法,且听下回细解!

<上一页  1  2  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    电子工程 猎头职位 更多
    扫码关注公众号
    OFweek电子工程网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号