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

cmaklist流程控制——调试及发布

cmaklist流程控制

目前只会配置-编译调试-打包发布,并且不会workflow控制
后续学习配置-编译调试-测试-打包发布workflow控制,理解整个流程,目前对流程控制理解也不够。

1.CMake Presets

先于Cmakelist文件,指导项目配置。
参考CMake之Presets编写
**CMAKE_BUILD_TYPE:**指定了编译类型,debug还是release
**CMAKE_INSTALL_PREFIX:**指定了cmakelist中install的前缀路径,类似于cmake -CMAKE_INSTALL_PREFIX
CMakePresets.json

{"version": 8,"configurePresets": [{"name": "radar-debug","displayName": "radar-debug","description": "radar-debug","generator": "Unix Makefiles","binaryDir": "${sourceDir}/out/debug/build","cacheVariables": {"CMAKE_BUILD_TYPE": "Debug","CMAKE_INSTALL_PREFIX": "${sourceDir}/out/debug/install"}},{"name": "radar-release","displayName": "radar-release","description": "radar-release","generator": "Unix Makefiles","binaryDir": "${sourceDir}/out/release/build","cacheVariables": {"CMAKE_BUILD_TYPE": "Release","CMAKE_INSTALL_PREFIX": "${sourceDir}/out/release/install"}}]
}

2.Cmakelist

通过Presets配置的CMAKE_BUILD_TYPE 控制编译,配合add_definitions(-DDEBUG_PRINTF)控制程序表现

cmake_minimum_required(VERSION 3.5.0)
project(radarSerial VERSION 0.1.0 LANGUAGES C CXX)# Set the default build type to Release if not specified
if(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()# Configure Debug and Release flags
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")  # Debug信息,关闭优化
set(CMAKE_CXX_FLAGS_RELEASE "-O3")   # 高级优化if(CMAKE_BUILD_TYPE STREQUAL "Debug")add_definitions(-DDEBUG_PRINTF)add_definitions(-DDEBUG_ENV)
endif()find_package(MY_LIBRARY_PATH NAMES CppLinuxSerial PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/cmake NO_DEFAULT_PATH REQUIRED)set(LIB_mqtt3c_PATH /usr/local/lib/)message(STATUS "CppLinuxSerial_DIR = ${CppLinuxSerial_DIR}")add_executable(radarSerial main.cpp)target_include_directories(radarSerial PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include""${CMAKE_CURRENT_SOURCE_DIR}/include/CppLinuxSerial"
)target_sources(radarSerialPRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/comm.cpp${CMAKE_CURRENT_SOURCE_DIR}/src/mqtt.cpp${CMAKE_CURRENT_SOURCE_DIR}/src/cJSON.c)target_link_libraries(radarSerial CppLinuxSerial::CppLinuxSerial pthread paho-mqtt3c)install(TARGETS radarSerial RUNTIME DESTINATION bin)
install(FILES
${LIB_mqtt3c_PATH}/libpaho-mqtt3c.so 
${LIB_mqtt3c_PATH}/libpaho-mqtt3c.so.1 
${LIB_mqtt3c_PATH}/libpaho-mqtt3c.so.1.3 
${CMAKE_CURRENT_SOURCE_DIR}/lib/libCppLinuxSerial.soDESTINATION lib)
http://www.lryc.cn/news/446191.html

相关文章:

  • 制作一个能对话能跳舞的otto机器人
  • git配置SSH
  • mozilla/pdf.js view.html加载指定页码
  • Qt之QFuture理解
  • 求二叉树的高度(递归和非递归)
  • Java查找算法——(四)分块查找(完整详解,附有代码+案例)
  • 进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结
  • 类似QQ聊天功能的Java程序
  • Redis 键值对数据库学习
  • 逆向推理+ChatGPT,让论文更具说服力
  • 「JavaScript深入」一文说明白JS的执行上下文与作用域
  • Qt C++设计模式->组合模式
  • Acwing Bellman-Ford SPFA
  • 我能禁止使用某协议的ip禁止访问我的资源吗
  • 快速理解TCP协议(二)——TCP协议中的拥塞控制机制详解
  • Linux:debug: systemtap: ubacktrace
  • 使用AI进行需求分析的案例研究
  • Python内置的re库
  • 毕业设计选题:基于ssm+vue+uniapp的面向企事业单位的项目申报小程序
  • jQuery 简介⑤属性操作
  • [Linux] Linux操作系统 进程的状态
  • 深入解析Python 中的 sortedcontainers 库:高效的排序数据结构
  • 什么是服务器日志,日志有什么作用?
  • Codeforces Round 971 (Div. 4)A-G1题解
  • QT----基于QML的计时器
  • Stable Diffusion的高分辨率修复(Hires.fix)
  • 智慧体育馆可视化:实时监控与智能管理
  • 【NLP】基于“检测器-纠错器”中文文本纠错框架
  • vue 中加载 Mapbox GL JS Examples
  • Vue3 中组件传递 + css 变量的组合