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

    文章

    4406

    浏览量

    66834
  • 编译
    +关注

    关注

    0

    文章

    688

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    第1章 如何学习单片机

      在错误的道路上日夜兼程,最终也无法成功,方法和思路绝对是最重要的。本章节讲到的学习单片机的方法,都是作者学习单片机的无数经验和教训总结出来的瑰宝。通过作者前面的披荆斩棘,开辟了道路,可以告诉读者
    的头像 发表于 10-10 10:32 233次阅读

    【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 775次阅读

    相关协议信号总结

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

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

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

    永磁同步电机阶迭代学习控制

    针对永磁同步电机存在的周期性脉动问题,提出了一种阶 PD-型迭代学习控制策略,该算法能够 有效实现最优跟踪控制 。利用卷积的推广 Young 不等式,获得了系统跟踪误差在 Lebesgue-p
    发表于 03-26 14:28

    使用STM32CubeMX生成CMake工程中的FLASH.ld被更改怎么解决?

    使用STM32CubeMX生成CMake工程之后,对STM32xxxx_FLASH.ld进行了修改。然后再次使用STM32CubeMX对工程进行修改的时候,STM32xxxx_FLASH.ld文件汇总被修改的部分会被恢复原状。请问各位有没有好的办法能够解决这个问题,烦请指教!!!
    发表于 03-10 06:52

    在CubeMX V6.13.0版本上配置的CMake工程无法通过编译怎么解决?

    在 CubeMX V6.13.0 版本上配置的 CMake 工程无法通过编译,报错如下图
    发表于 03-07 16:59

    为什么无法在OpenVINO™ 2021.3源中使用CMAKE编译ONNX模型?

    尝试从源版本 2021.3 编译OpenVINO™ 错误: ~/项目/OpenVINO/cmake-build-debug/_deps/ext_onnx-src/onnx/onnx_pb.h
    发表于 03-05 08:29

    TOF学习总结

    iToF(间接飞行时间)技术中,波长越短,分辨细节的能力越好,主要原因与光的波动特性和调制信号的特性密切相关。以下是详细解释:1. 光的波动特性:波长与分辨率的关系波长越短,空间分辨率越高:光的波长决定了其能够分辨的最小细节。根据光学理论,分辨率与波长成反比,波长越短,能够分辨的特征尺寸越小。例如,可见光的波长(400-700 nm)比红外光(通常用于iToF,波长约850 nm)更短,因此可见光能够分辨更细微的细节。衍射极限:光的衍
    发表于 02-25 17:49 0次下载

    如何优化BP神经网络的学习

    训练过程中发生震荡,甚至无法收敛到最优解;而过小的学习率则会使模型收敛速度缓慢,容易陷入局部最优解。因此,正确设置和调整学习率对于训练高效、准确的神经网络模型至关重要。 学习率优化
    的头像 发表于 02-12 15:51 1423次阅读

    关于RISC-V芯片的应用学习总结

    RISC-V芯片作为一种基于精简指令集计算(RISC)原则的开源指令集架构(ISA)芯片,近年来在多个领域展现出了广泛的应用潜力和显著优势。以下是对RISC-V芯片应用的总结。 RISC-V芯片
    发表于 01-29 08:38