1.项目构建

构建项目 ,建立一个CMakeLists.txt文件

1
2
3
4
5
6
7
8
9
10
11
12
# Set the minimum version of CMake that can be used
# To find the cmake version run
# $ cmake --version
cmake_minimum_required(VERSION 3.5)

# Set the project name
project (hello_cmake)

# set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# Add an executable
add_executable(hello_cmake main.cpp)

我们可以通过下面命令将可执行文件重定向到bin目录下:

1
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
1
2

mkdir build && cd build cmake .. && make -j4

cmake .. 执行cmake

通常头文件放在include目录下,源码放在src下,main文件放在src的一级目录,函数文件可以继续递归放置:

1
2
3
4
5
6
7
8
.
├── CMakeLists.txt
├── include
│ └── Hello.h
└── src
├── Hello.cpp
└── main.cpp

2. Cmake核心语法变量

CMake 提供了许多内置变量,这里列出一些常用且重要的:

  • CMAKE_C_COMPILER 和 CMAKE_CXX_COMPILER:分别指定C和C++编译器的路径。
  • CMAKE_INSTALL_PREFIX:指定安装路径,默认情况下是/usr/local或者C:/Program Files(在Windows上)。
  • PROJECT_SOURCE_DIR 和 PROJECT_BINARY_DIR:分别是项目的源代码目录和构建输出目录。
  • CMAKE_CURRENT_SOURCE_DIR 和 CMAKE_CURRENT_BINARY_DIR:当前处理的CMakeLists.txt所在的源代码目录和对应的构建目录。
  • CMAKE_SYSTEM_NAME:指明目标系统名称,比如Linux、Windows等。

通过 cmake 提供的函数 message 可以打印这些变量。

1
2
3
4
5
6
7
8
message(STATUS "CMake CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
message(STATUS "CMake CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
message(STATUS "CMake CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
message(STATUS "CMake PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
message(STATUS "CMake PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR}")
message(STATUS "CMake CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}")
message(STATUS "CMake CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
message(STATUS "CMake CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")

add_subdirectory 增加子目录

定义自己的变量

在命令行设置

运行 cmake 命令时使用 -D 选项来设置变量

1
2
3
cmake -D<VARIABLE_NAME>=<value> /path/source
//例子
cmake -DCMAKE_BUILD_TYPE=Debug ..

通过set()设置

不会读缓存

直接在 CMakeLists.txt 文件中使用 set() 命令来定义变量

set(MY_VARIABLE "my_value")

通过 option 设置

对于布尔类型的选项,可以使用 option 命令

1
2
3
option(<option_name> "<help_string>" [initial value])
//示例
ption(ENABLE_FEATURE "Enable or disable feature" ON)

扩展知识

message语法

message([<mode>] "message text" ...)

支持的消息类型:

  • STATUS:普通状态消息。通常显示在标准输出中。
  • WARNING:警告消息。CMake 会继续处理,但会显示警告。
  • AUTHOR_WARNING:针对开发者或脚本作者的警告消息。适用于提示脚本编写者注意某些问题。
  • SEND_ERROR:错误消息。停止处理当前文件,但仍将继续生成构建系统。
  • FATAL_ERROR:致命错误消息。立即停止所有 CMake 处理。
  • DEPRECATION:弃用消息。可用于标记已弃用的功能。可以与 STATUS, WARNING, SEND_ERROR, 或 FATAL_ERROR 结合使用。

示例用法:

1
2
3
4
5
message(STATUS "This is a status message")
message(WARNING "This is a warning message")
message(SEND_ERROR "This is an error that stops processing this file")
message(FATAL_ERROR "A fatal error has occurred.")
message(DEPRECATION "The feature X is deprecated and will be removed in future versions.")

0.2 解释下面器件

敏感元件:是指传感器中直接感受被测量的部分

传感器:传感器是能感受规定的被测量并按照一定规律转换成可用输出信号的器件或装置,通常由敏感元件和转换元件组成。

信号调制器:常见的信号调节与转换电路有放大器、电桥丶振荡器、电荷放大器等,它们分别与相应的传感器相配合。信号调节与转换电路也称为信号调制器。

变送器:变送器是将传感器信号转换为标准电信号的装置,用于工业过程监测和控制系统中传输数据。

1.8 什么是传感器的静态特性?有哪儿些性能指标?

静态特性是指当输入量为常量或变化极慢时传感器的输入-输出特性。

衡量传感器的性能指标有:线性度、迟滞、重复性、灵敏度与灵敏度误差、分辨率与阈值、稳定性、温度稳定性、静态误差、多种抗干扰能力。

2.9 应片上产生温度误差的原因?减小和补偿温度误差的方法是什么?

误差原因在外界温度变化的条件下,由于敏感栅温度系数αt及栅丝与试件膨胀系数(βg及βs)之差异性而产生虚假应变输出有时会产生与真实应变同数量级的误差。必须采取补偿温度误差的措施。

具体原因如下:

  1. 敏感栅材料温度系数引起电阻变化;
  2. .应变片与被测材料热膨胀系数不匹配,导致热应变。
  3. 粘结剂和基底的热形变影响应变传递;
  4. 环境温度波动引发热应力

通常温度误差补偿方法有两类:
A、自补偿法。1.单丝自补偿法 2.组合式自补偿法.

B.组合式自补偿法 电桥补偿法.