10 KiB
C-SDK 编译方式及配置选项说明
本文档对C-SDK 的编译方式和编译配置选项进行说明,并介绍了 Linux和Windows 开发环境下面的编译环境搭建以及编译示例。
C-SDK 编译方式说明
C-SDK 支持三种编译方式
1. cmake 方式
推荐使用cmake作为跨平台的编译工具,支持在Linux和Windows开发环境下进行编译。 cmake方式采用CMakeLists.txt作为编译配置选项输入文件
2. Makefile 方式
对不支持cmake的环境,使用Makefile直接编译的方式,该方式与SDK v3.0.3及之前的版本保持一致,采用make.settings作为编译配置选项输入文件,修改完成后执行make即可
3. 代码抽取方式
该方式可根据需求选择功能,将相关代码抽取到一个单独的文件夹,文件夹里面的代码层次目录简洁,方便用户拷贝集成到自己的开发环境。 该方式需要依赖cmake工具,在CMakeLists.txt中配置相关功能模块的开关,并将EXTRACT_SRC置为ON,Linux环境运行以下命令
mkdir build
cd build
cmake ..
即可在output/qcloud_iot_c_sdk中找到相关代码文件,目录层次如下:
qcloud_iot_c_sdk
├── include
│ ├── config.h
│ ├── exports
├── platform
└── sdk_src
└── internal_inc
include目录为SDK供用户使用的API及可变参数,其中config.h为根据编译选项生成的编译宏。API具体介绍请参考C-SDK_API及可变参数说明。 platform目录为平台相关的代码,可根据设备的具体情况进行修改适配。具体的函数说明请参考文档C-SDK_Porting跨平台移植概述 sdk_src为SDK的核心逻辑及协议相关代码,一般不需要修改,其中internal_inc为SDK内部使用的头文件。
用户可将qcloud_iot_c_sdk拷贝到其目标平台的编译开发环境,并根据具体情况修改编译选项。
C-SDK 编译选项说明
1. 编译配置选项
以下配置选项大部分都适用于cmake和make.setting。cmake中的ON值对应于make.setting的y,OFF对应于n。
名称 | cmake值 | 说明 |
---|---|---|
BUILD_TYPE | release/debug | release:不启用IOT_DEBUG信息,编译输出到release目录下 debug:启用IOT_DEBUG信息,编译输出到debug目录下 |
EXTRACT_SRC | ON/OFF | 代码抽取功能开关,仅对使用cmake有效 |
COMPILE_TOOLS | gcc | 支持gcc和msvc,也可以是交叉编译器比如arm-none-linux-gnueabi-gcc |
PLATFORM | linux | 包括linux/windows/freertos/nonos |
FEATURE_MQTT_COMM_ENABLED | ON/OFF | MQTT通道总开关 |
FEATURE_MQTT_DEVICE_SHADOW | ON/OFF | 设备影子总开关 |
FEATURE_COAP_COMM_ENABLED | ON/OFF | CoAP通道总开关 |
FEATURE_GATEWAY_ENABLED | ON/OFF | 网关功能总开关 |
FEATURE_OTA_COMM_ENABLED | ON/OFF | OTA固件升级总开关 |
FEATURE_OTA_SIGNAL_CHANNEL | MQTT/COAP | OTA信令通道类型 |
FEATURE_AUTH_MODE | KEY/CERT | 接入认证方式 |
FEATURE_AUTH_WITH_NOTLS | ON/OFF | OFF: TLS使能, ON: TLS关闭 |
FEATURE_DEV_DYN_REG_ENABLED | ON/OFF | 设备动态注册开关 |
FEATURE_LOG_UPLOAD_ENABLED | ON/OFF | 日志上报开关 |
FEATURE_EVENT_POST_ENABLED | ON/OFF | 事件上报开关 |
FEATURE_DEBUG_DEV_INFO_USED | ON/OFF | 设备信息获取来源开关 |
FEATURE_SYSTEM_COMM_ENABLED | ON/OFF | 获取后台时间开关 |
FEATURE_AT_TCP_ENABLED | ON/OFF | AT模组TCP功能开关 |
FEATURE_AT_UART_RECV_IRQ | ON/OFF | AT模组中断接受功能开关 |
FEATURE_AT_OS_USED | ON/OFF | AT模组多线程功能开关 |
FEATURE_AT_DEBUG | ON/OFF | AT模组调试功能开关 |
FEATURE_MULTITHREAD_TEST_ENABLED | ON/OFF | 是否编译Linux多线程测试例程 |
配置选项之间存在依赖关系,当依赖选项的值为有效值时,部分配置选项才有效,主要如下:
名称 | 依赖选项 | 有效值 |
---|---|---|
FEATURE_MQTT_DEVICE_SHADOW | FEATURE_MQTT_COMM_ENABLED | ON |
FEATURE_GATEWAY_ENABLED | FEATURE_MQTT_COMM_ENABLED | ON |
FEATURE_OTA_SIGNAL_CHANNEL(MQTT) | FEATURE_OTA_COMM_ENABLED FEATURE_MQTT_COMM_ENABLED |
ON ON |
FEATURE_OTA_SIGNAL_CHANNEL(COAP) | FEATURE_OTA_COMM_ENABLED FEATURE_COAP_COMM_ENABLED |
ON ON |
FEATURE_AUTH_WITH_NOTLS | FEATURE_AUTH_MODE | KEY |
FEATURE_AT_UART_RECV_IRQ | FEATURE_AT_TCP_ENABLED | ON |
FEATURE_AT_OS_USED | FEATURE_AT_TCP_ENABLED | ON |
FEATURE_AT_DEBUG | FEATURE_AT_TCP_ENABLED | ON |
2. 设备信息选项
在腾讯云物联控制台创建设备之后,需要将设备信息(ProductID/DeviceName/DeviceSecret/Cert/Key文件)配置在SDK中才能正确运行。在开发阶段,SDK 提供两种方式存储设备信息:
- 存放在代码中(编译选项DEBUG_DEV_INFO_USED = ON),则在
platform/os/xxx/HAL_Device_xxx.c
中修改设备信息,在无文件系统的平台下可以使用这种方式。 - 存放在配置文件中(编译选项DEBUG_DEV_INFO_USED = OFF),则在
device_info.json
文件修改设备信息,此方式下更改设备信息不需重新编译SDK,在Linux/Windows平台下开发推荐使用这种方式。
C-SDK 编译环境
Linux(Ubuntu)环境
本文使用Ubuntu的版本为14.04或16.04
- 必要软件安装
$ sudo apt-get install -y build-essential make git gcc cmake
SDK需要cmake版本在3.5以上,默认安装的cmake版本较低,可以参考如下链接进行cmake特定版本的下载与安装 下载链接:https://cmake.org/download/ 安装参考:https://gitlab.kitware.com/cmake/cmake
- 配置修改 修改CMakeLists.txt确保以下选项存在(以密钥认证设备为例)
set(BUILD_TYPE "release")
set(COMPILE_TOOLS "gcc")
set(PLATFORM "linux")
set(FEATURE_MQTT_COMM_ENABLED ON)
set(FEATURE_AUTH_MODE "KEY")
set(FEATURE_AUTH_WITH_NOTLS OFF)
set(FEATURE_DEBUG_DEV_INFO_USED OFF)
- 执行脚本编译 完整编译库和示例
./cmake_build.sh
输出的库文件,头文件及示例在output/release
文件夹中。
在一次完整编译之后,若只需要编译示例,则执行
./cmake_build.sh samples
- 填写设备信息 将在腾讯云物联网平台创建的设备的设备信息(以密钥认证设备为例)填写到device_info.json中,如:
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}
- 运行示例
示例输出位于
output/release/bin
文件夹中,比如运行data_template_sample示例,输入./output/release/bin/data_template_sample
即可。
Windows环境
获取和安装Visio Studio 2019开发环境
请访问Visual Studio下载网站,下载并安装Visio Studio 2019,本文档下载安装的是16.2版本 Community。
然后选择使用C++的桌面开发,并确保勾选用于Windows的C++ CMAKE工具:
编译并运行
-
运行visual studio,选择打开本地文件夹,并选择下载的C SDK目录。
-
双击打开根目录的CMakeLists.txt,并确认编译工具链中设置的平台为windows和编译工具为MSVC(其他配置选项请参考cmake编译配置与代码抽取)。
# 编译工具链 #set(COMPILE_TOOLS "gcc") #set(PLATFORM "linux") set(COMPILE_TOOLS "MSVC") set(PLATFORM "windows")
-
visual studio会自动生成cmake缓存,请等待cmake缓存生成完毕。
-
缓存生成完毕后,点击生成->全部生成。