社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
嵌入式系统
›
《CMake构建实战》CMake 构建目标和属性
返回列表
发新帖
回复
阅
846
|
回
0
小麦克
当前离线
一粒金砂(中级)
最后登录
2024-11-21
在线时间
67 小时
威望
168分
芯积分
150分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
1
小麦克
169
帖子
3
TA的资源
一粒金砂(中级)
+ 好友
私信
楼主
发表于2024-11-4 19:42
只看该作者
《CMake构建实战》CMake 构建目标和属性
[复制链接]
# CMake 构建目标和属性 ## 二进制构建目标 在构建过程中被构建的可执行文件、库文件或目标文件都可以作为二进制构建目标。 ### 可执行文件目标 ```cmake add_executable(<目标名称> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [源文件...]) ``` 该命令会创建一个可执行文件类型的构建目标,其中第一个参数<目标名称>是必选参数,且应当在项目中唯一。 创建一个小工程实践一下。创建`008`文件夹 创建`CMakeLists.txt` ```cmake cmake_minimum_required(VERSION 3.20) project(myProgram) add_executable(myProgram main.c) add_executable(myProgramExcludedFromAll EXCLUDE_FROM_ALL main.c) ``` 创建`main.c` ```c #include
int main() { printf("hello world\n"); return 0; } ``` 执行命令 ```bash bruce@ubuntu:~/Documents/study/cmake/008$ touch CMakeLists.txt bruce@ubuntu:~/Documents/study/cmake/008$ vi CMakeLists.txt bruce@ubuntu:~/Documents/study/cmake/008$ vi main.c bruce@ubuntu:~/Documents/study/cmake/008$ mkdir build bruce@ubuntu:~/Documents/study/cmake/008$ cd build/ bruce@ubuntu:~/Documents/study/cmake/008/build$ cmake .. -- The C compiler identification is GNU 13.2.0 -- The CXX compiler identification is GNU 13.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done (0.2s) -- Generating done (0.0s) -- Build files have been written to: /home/bruce/Documents/study/cmake/008/build bruce@ubuntu:~/Documents/study/cmake/008/build$ make [ 50%] Building C object CMakeFiles/myProgram.dir/main.c.o [100%] Linking C executable myProgram [100%] Built target myProgram bruce@ubuntu:~/Documents/study/cmake/008/build$ ./myProgram hello world ``` ### 一般库目标 一般库目标包括静态库目标、动态库目标和模块库目标。 ```cmake add_library(<目标名称> <库类型> [EXCLUDED_FROM_ALL] [<源文件>...]) ``` 该命令会创建一个一般库类型的构建目标,其中<目标名称>参数是必选项,且应在项目中唯一。 <库类型>参数有以下三个取值。 * STATIC * SHARED * MODULE 实践,创建`009`文件夹 创建 `CMakeLists.txt` ```cmake cmake_minimum_required(VERSION 3.20) project(mylib) add_library(mylib lib.c) ``` 创建`lib.c` ```c int add(int a, int b) { return a+b; } ``` 操作过程如下 ```bash bruce@ubuntu:~/Documents/study/cmake/009$ vi CMakeLists.txt bruce@ubuntu:~/Documents/study/cmake/009$ ls CMakeLists.txt bruce@ubuntu:~/Documents/study/cmake/009$ touch lib.c bruce@ubuntu:~/Documents/study/cmake/009$ vi lib.c bruce@ubuntu:~/Documents/study/cmake/009$ ls CMakeLists.txtlib.c bruce@ubuntu:~/Documents/study/cmake/009$ mkdir build bruce@ubuntu:~/Documents/study/cmake/009$ cd build/ bruce@ubuntu:~/Documents/study/cmake/009/build$ cmake .. -- The C compiler identification is GNU 13.2.0 -- The CXX compiler identification is GNU 13.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done (0.2s) -- Generating done (0.0s) -- Build files have been written to: /home/bruce/Documents/study/cmake/009/build bruce@ubuntu:~/Documents/study/cmake/009/build$ make [ 50%] Building C object CMakeFiles/mylib.dir/lib.c.o [100%] Linking C static library libmylib.a [100%] Built target mylib bruce@ubuntu:~/Documents/study/cmake/009/build$ ls CMakeCache.txtCMakeFilescmake_install.cmakelibmylib.aMakefile bruce@ubuntu:~/Documents/study/cmake/009/build$ ``` 可以看到最后生成了 `libmylib.a` 可以看到不定义`BUILD_SHARED_LIBS`变量时,默认构建静态库。接下来试验定义`BUILD_SHARED_LIBS` ```bash bruce@ubuntu:~/Documents/study/cmake/009/build$ cmake -DBUILD_SHARED_LIBS=ON .. -- Configuring done (0.0s) -- Generating done (0.0s) -- Build files have been written to: /home/bruce/Documents/study/cmake/009/build bruce@ubuntu:~/Documents/study/cmake/009/build$ cmake --build . [ 50%] Building C object CMakeFiles/mylib.dir/lib.c.o [100%] Linking C shared library libmylib.so [100%] Built target mylib bruce@ubuntu:~/Documents/study/cmake/009/build$ ls CMakeCache.txtCMakeFilescmake_install.cmakelibmylib.alibmylib.soMakefile bruce@ubuntu:~/Documents/study/cmake/009/build$ ``` 定义了`BUILD_SHARED_LIBS`后生成了`libmylib.so`动态库。
此帖出自
嵌入式系统论坛
点赞
关注
(0)
嵌入式论坛
嵌入式开发
嵌入式技术
嵌入式教程
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
浏览过的版块
WindowsCE
活动
更多>>
有奖直播报名中!抢占工业4.1先机,WT·世健科技日等你来!
罗姆有奖直播 | 重点解析双极型晶体管的实用选型方法和使用方法
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
免费下载 | 安森美电动汽车充电白皮书,看碳化硅如何缓解“里程焦虑”!
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
开源项目
更多>>
LTC3727 多相开关现已可用于高输出电压电信、汽车和工业电源
带有差分输入的 NCP2890 1W 音频功率放大器的典型音频放大器应用电路
使用 NXP Semiconductors 的 MCF5234CVM150 的参考设计
基于XC2287M与MC9S08DZ60的BMS源码
AD8548ARZ-RL电压跟随器配置的典型应用电路
使用 ROHM Semiconductor 的 BD45372 的参考设计
具有遥控装置电容感应的无线遥控
LTM4622EY 4 至 20Vin、1V 和 1.8V 输出、2.5A 降压模块稳压器的典型应用电路
使用 Analog Devices 的 LTC4162EUFD-FAD 的参考设计
随便看看
工程编译目标文件project.out使用属性察看size的大小和实际文件大小问什么不一样?
在Tornado环境下,编译downloadable类型的工程,生成project68MB左右,而到工程目录下找到projectout下载到目标机,目标机资源占用情况也差不多只增加了0out实际文件这么大呢?这种可以download的文件到底多了哪些内容?可以通过编译设置将文件变小吗?若改为 ...
《Cmake构建实战》5 onnxruntime手写识别实践(libpng引用失败)
[i=s]本帖最后由maskmoo于2024-11-320:02编辑[/i]1工程设计设计目标实现包括手写数字识别库以及一个识别命令行工具,识别库能够被C语言等其他编程语言所调用。目录结构├─cli├─cmake├─include├─models└─src└─CMakeList.txt接口设计 初始化手写数字 ...
什么样的传感器加入AI最实用?
首选必然是音频传感器,图像传感器。其次我觉得加速度计也挺合适的,导入数据通过AI得出姿态或者动作。大家还有其他传感器+AI算法的想法吗?
电驱动钛丝(SMA)的可靠性设计(7) 接触面设计
入围名单公布:嵌入式工程师AI挑战营(进阶)的挑战者们,领取板卡啦
I/O口功能选择问题
如何采集同时到来的多通道模拟量?
用stm32写16X16点阵
关于STM32-DCMI(基于ST官方的应用文档AN5020)
怎么我的win7 64位驱动还是安装不成功
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
磁阻式同步电动机
绝缘油耐压试验仪
脉冲充电器
高压电容
特征频率
微机保护
隔离开关
跨步电压
D触发器
DP接口
相关文章
更多>>
消息称铠侠最快明天获上市批准,市值有望达 7500 亿日元
11 月 21 日消息,路透社报道称,在贝恩资本的支持下,铠侠将于当地时间周五(11 月 22 日)获东京证券交易所上市批准。 根据其 IPO 指示价,铠侠的市值预计达到约 7500 亿日元(当前约
美国政府敲定对格芯 15 亿美元《CHIPS》法案补贴,支持后者提升在美产能
11 月 21 日消息,美国商务部当地时间昨日正式宣布将向格芯 GlobalFoundries 提供合计 15 亿美元(当前约 108.71 亿元人民币)的《CHIPS》法案直接资金,具体补贴发放将
SK 海力士宣布量产全球最高的 321 层 1Tb TLC 4D NAND 闪存,计划 2025 上半年对外出货
11 月 21 日消息,SK 海力士刚刚宣布开始量产全球最高的 321 层 1Tb(太比特,与 TB 太字节不同)TLC(Triple Level Cell)4D NAND 闪存。 据介绍,此 32
UWB上车新花样,无线BMS也能用它?
填补国内空白!中国移动、华为等联合发布首颗GSE DPU芯片
三星电子 NRD-K 半导体研发综合体进机,将导入 ASML High NA EUV 光刻设备
苹果揭秘自研芯片成功原因:竞争对手没法用最新尖端技术
芯片大混战将启:高通、联发科涉足笔记本,AMD 被曝入局手机
Exynos 2600 芯片成关键,消息称三星将打响 2nm 芯片反击战
曾称华为不可能追上!台积电制程遥遥领先,2nm未量产已招大客户抢单
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
精选推荐
CW32L010学习笔记
帮忙分析下EMI不过的原因
报名剩2天:30套RV1106 Linux开发板(带摄像头),邀您挑战边缘AI~
拯救电源EMI的铁三角:电感、磁珠、电容
开关电源上拉电阻和上拉电阻电路图解
启明云端&触觉智能与您相约2024年慕尼黑国际电子元器件博览会,不见不散!
深度学习框架的相关讨论
[STM32H7R/S]测评 ⑦制作一个NANO EDGE AI STUDIO采集数据使用的Data Logger
启明云端&触觉智能与您相约2024年慕尼黑国际电子元器件博览会,不见不散!
【2024 DigiKey创意大赛】基于树莓派的幸福晚年辅助宝
等待很久的STM32N6终于要发布了!
ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!报名峰会,还能赢【开发板、京东卡】呦~12月12日14:00不见不散!
查看 »
有奖直播报名| 高可靠性IGBT新选择 —— 安世半导体650V IGBT
【直播时间】12月19日(周四)下午15:00-16:30
【直播好礼】定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
安世半导体直播报名中
直播主题:安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
直播时间:12月17日(周二)下午14:00
报名就有机会获得:定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
PI 电源小课堂 | 无 DC-DC 变换实现多路高精度输出反激电源
时间:即日起-12月15日
看视频学习电源干货,答题赢取京东卡!
查看 »
参会有好礼 | 2024 瑞萨电子MCU/MPU工业技术研讨会
深圳站:11月30日(周六)深圳湾万怡酒店
上海站:12月06日(周五)上海喜玛拉雅酒店
奖励设置:现金红包、螺丝刀套装或30元京东卡
查看 »
Littelfuse 新品赋能电子产品安全可靠并高效, 10+挑战等你探索!
Littelfuse 应用赋能星球,覆盖了诸多应用痛点及解决办法,邀请工程师一起探索,解锁更多设计力!
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
有奖活动|英飞凌高密度双相电源模块为高性能运算平台而生
活动时间:即日起-12月15日
活动奖励:蓝牙音箱、氮化镓充电器套装、黑色小背包
查看 »
本月精选下载推荐:
Vishay——选型-汽车级表面贴装和通孔超快整流器
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛