当前位置: 首页 > news >正文

Linux下cmake构建方法

1. 工程目录结构如下:

2. 根目录下build.sh文件内容如下:

#!/bin/bash # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' ROOT_DIR=$(pwd) OUT_DIR=${ROOT_DIR}/out/ BUILD_DIR=${ROOT_DIR}/build if [ "$1" == "clean" ]; then echo -e "${BLUE}clean all, rm -rf build; rm -rf out${NC}" rm -rf ${BUILD_DIR} rm -rf ${OUT_DIR} fi if [ ! -d "${BUILD_DIR}" ]; then echo "build dir ${BUILD_DIR} not exist, need create !" mkdir -p ${BUILD_DIR} fi if [ ! -d "${OUT_DIR}" ]; then echo "out dir ${OUT_DIR} not exist, need create !" mkdir -p ${OUT_DIR} fi cd ${BUILD_DIR} cmake .. make make install echo $(date) > ${OUT_DIR}/.build_time echo -e "${GREEN}build success!${NC}"

3. 根目录下的CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 3.10) project(MyProject VERSION 1.0.0) # 设置C标准 set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # 设置安装前缀(out目录) set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/out) message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") # 调试信息 # 添加子目录 add_subdirectory(app) add_subdirectory(tools)

4. app目录下的CMakeLists.txt文件内容如下:

set(APP_TARGET "app") set(APP_SRC main.c) add_executable(${APP_TARGET} ${APP_SRC}) install(TARGETS ${APP_TARGET} RUNTIME DESTINATION bin)

5. tools目录下的CMakeLists.txt文件内容如下:

add_subdirectory(test)

6. tools/test目录下的CMakeLists.txt文件内容如下:

set(TEST_TARGET "test") set(TEST_SRC main.c) add_executable(${TEST_TARGET} ${TEST_SRC}) # 关键:必须添加 install 命令 install(TARGETS ${TEST_TARGET} RUNTIME DESTINATION bin )
http://www.jsqmd.com/news/723744/

相关文章:

  • 32位微控制器技术解析与应用选型指南
  • GitHub中文插件:3分钟破解代码协作的语言壁垒,让全球开发者平台说中文
  • 2025届毕业生推荐的六大降AI率神器横评
  • 2026年网红开会语音转文字app多维度实测对比,全面PK后,差距竟然这么大
  • VCS用户必看:Python脚本处理寄存器Excel的5个常见坑与避坑指南
  • 别再让多线程搞乱你的计数器!手把手教你用Linux内核atomic_t实现线程安全(附完整代码)
  • 探讨服务不错的网球俱乐部品牌,梅江南网球俱乐部口碑如何? - 工业设备
  • 算法训练营第十七天 | 151.反转字符串中的单词
  • 伊辛机副本耦合拓扑结构优化与误差缓解方法研究
  • 微信小程序自定义TabBar踩坑实录:TDesign组件与getTabBar接口的配合使用指南
  • 索引失效案例分析:5个让SQL不走索引的坑
  • C++信号处理
  • SeqTrack模型专题全面调研
  • 【附Python源码】基于MLP的波士顿房价预测
  • 性价比高的专用汽车汇总,程力专用汽车可靠吗及行业口碑揭秘 - 工业设备
  • 合规消费增值:从市场痛点到落地玩法,商家、用户、平台都能赢
  • 重载型工业安全地毯,机械作业安全防护优选
  • LDR6500U:Type‑C PD 取电 “一芯通吃”,赋能全场景高效供电
  • 天线测量技术:频谱与网络分析仪应用指南
  • 全志D1s RISC-V开发板:十美元Linux方案解析
  • 记一次 OpenClaw Token 费用优化:从日均 50 美元到 12 美元的技术拆解
  • CBCX平台:多市场接入与跨境交易适配
  • Keithley 2600B系列SMU仪器:高精度电子测试解决方案
  • 用Typer从零搭一个AI命令行工具:我踩过的6个坑
  • 你的数字足迹守护者:为每个应用打造专属位置身份
  • 如何使用 RS® ZNL 设置并执行网络分析仪测量
  • 全网最详细的postman接口测试教程,一篇文章满足你
  • RTX 30/40系显卡实测:用OpenCV CUDA加速图像处理,效率提升多少?
  • 3步解决视频卡顿问题:Flowframes AI插帧实战指南
  • 2026大批量礼盒定制技术干货:从合规到成本的全链路管控 - 优质品牌商家