0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Cmake学习的总结(二)

电子设计 来源:电子设计 作者:电子设计 2020-12-24 17:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家好,上次给大家分享了第一篇 cmake 文章:cmake学习总结(一),今天继续给大家分享cmake。那么废话就不多说,开始内容分享。

用好 Cmake,高兴一整天(甚至……):

1、多个源文件,使用命令 aux_source_directory(dir var):

在上一篇文章最后结尾的时候,有一个问题,就是在同一目录下面,有多个源文件的时候,这个时候你不能都往下面第三条命令里面一直手动添加源文件,那工作效率多低啊:

cmake_minimum_required(VERSION 2.8)

project(main)

add_executable(main main.c test1.c)

于是乎为了解决这种低效率的操作,在 cmake 里面有一条指令可以完全搞定这个问题;不过为了说明问题,在这之前我又添加了两个文件:test2.c 和 test2.h:

root@txp-virtual-machine:/home/txp/test# ls

1 cmake_install.cmake main.c test1.h touch1.c

CMakeCache.txt CMakeLists.txt Makefile test2.c touch1.h

CMakeFiles main test1.c test2.h

test2.c内容如下:

#include <stdio.h>

#include "test2.h"

void func1()

printf("i like the cmake");

test2.h内容如下:

#ifndef _TEST2_H_

#define _TEST2_H_

void func1();

#endif

最后main.c里面调用了func1函数:

#include <stdio.h>

#include "test1.h"

#include "test2.h"

int main(void)

func1();

func(8);

printf("TXP嵌入式");

return 0;

接下来我们的重点就来了,在cmake里面可以使用aux_source_directory(dir var)就可以搞定上面效率低的问题,接下来我们在CMakeLists.txt这样操作:

cmake_minimum_required(VERSION 2.8)

project(main)

aux_source_directory(. SRC_LIST)

add_executable(main ${SRC_LIST})

然后再进行编译:

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

[ 25%] Building C object CMakeFiles/main.dir/main.c.o

[ 50%] Linking C executable main

root@txp-virtual-machine:/home/txp/test# ./main

i like the cmake

the b is 8

TXP嵌入式

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4423

    浏览量

    67963
  • 编译
    +关注

    关注

    0

    文章

    697

    浏览量

    35314
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    S32DS IDE:CMake项目,使用 PE 进行 ELF 文件调试时,它没有按预期工作,为什么?

    我正在使用 cmake nijia 而不是 S32DS IDE 来创建 ELF 文件。目标开发板是S32K344,编译器是GHS。 到目前为止,我已经成功生成了 ELF 文件,但是在使用 PE 进行
    发表于 04-16 11:14

    如何在 STM32Cube CMake 工程中添加源文件

    STM32CubeMX 能够很方便的导出 CMake 工程。例如,如下图所示在 STM32CubeMX的 ToolChain/IDE 中选择 CmakeCMake 工程可以很容易被
    发表于 04-15 16:07 0次下载

    EMC PCB设计总结

    EMC PCB设计总结
    发表于 03-23 14:52 14次下载

    FRDM i.MX 93 机器学习动手实践请教

    results following the Hands On Workshop. We were able to 1. 训练并下载 TSS 模型 2. 下载 Arm 工具、SDK、CMAKE
    发表于 03-18 07:19

    LAT1574_如何在 STM32Cube CMake 工程中添加源文件

    STM32CubeMX 能够很方便的导出 CMake 工程。例如,如下图所示在 STM32CubeMX的 ToolChain/IDE 中选择 CmakeCMake 工程可以很容易被
    发表于 03-11 10:46 0次下载

    使用CMake+VSCode环境移植ThreadX到极海G32R501 MCU

    我本人是 cmake+vscode 组合的忠实用户,之前写了一篇文章介绍了在 cmake+vscode 环境下开发 G32R501 的一些实践经验。这篇文章准备更进一步:移植一个ThreadX。
    的头像 发表于 03-09 14:04 2760次阅读
    使用<b class='flag-5'>CMake</b>+VSCode环境移植ThreadX到极海G32R501 MCU

    总结学习硬件设计要点

    大家有所重视。 调试方法,多种多样,视情况而定,不能一概而论,笔者总结了以下几个方法: a、示波器测量。当然,首先你得清楚你设计出来的电路,会出什么样的波形,才知道测出来对不对,也就是说,理论不行
    发表于 01-06 06:40

    ESP32 编译过程中 bootloader 配置阶段的 CMake 缓存冲突错误,记录

    删除相关行) 总结 核心问题:CMake 缓存中记录的 ESP-IDF 路径(v5.4.3)与当前使用的路径(v5.5.1)不匹配,导致配置失败。 关键修复:删除 build 目录清除缓存 + 重置
    发表于 12-23 07:07

    使用vscode和cmake工具开发极海G32R501 MCU

    目前极海官方提供的 IDE 开发环境有 Keil/IAR/Eclipse。都能很好的完成开发,但是 VS Code 配合 CMake 工具是更加“现代”的C/C++开发环境,本文提供了在 VS Code 环境下的开发经验,以供参考。
    的头像 发表于 11-25 14:45 3411次阅读
    使用vscode和<b class='flag-5'>cmake</b>工具开发极海G32R501 MCU

    CubeMX 生成的 RTT 项目无法通过 cmake 编译怎么解决?

    在 CubeMX V6.13.0 版本上配置的 CMake 工程无法通过编译,报错如下图
    发表于 10-11 15:04

    【CPKCOR-RA8D1】1、VSCODE+CMAKE开发环境搭建

    利用Renesas Platform安装 这是我安装的工具,扩展会自动收集已安装工具: 5、安装VS CODE扩展CMAKE TOOLS 方便配置编译CMAKE工程 、从点灯开始 1、FSP
    发表于 10-09 16:17

    ubuntu编译stm32cubmax生成的cmake工程,在最后链接阶段报错,怎么解决?

    我是直接stm32cubmax 生成的cmake 工程,我在Ubuntu 编译的时候找不到这个-lc_none , 但是我看了我的编译器安装路径有一个nano.specs ,cmake 连接选项也有
    发表于 08-08 07:30

    SEGGER工具链集成到CMake和VS Code了

    SEGGER公司已将其嵌入式开发工具链集成到了广泛使用的CMake构建配置工具中,这意味着基于Visual Studio Code(VS Code)代码编辑器的应用开发可以方便的使用SEGGER工具实现了。
    的头像 发表于 07-23 15:06 1237次阅读

    相关协议信号总结

    电子发烧友网站提供《相关协议信号总结.xlsx》资料免费下载
    发表于 06-25 15:34 5次下载

    基于LockAI视觉识别模块:C++维码识别

    维码识别是视觉模块经常使用到的功能之一。我们将演示如何使用基于瑞芯微RV1106的LockAI视觉识别模块进行维码识别。 源代码网址:https://gitee.com/LockzhinerAI
    发表于 05-26 09:57