Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

描述:修复交叉编译时,samples 不能被编译通过的问题。 #33

Open
wants to merge 37 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0584302
1. 增加设备动态注册功能。
May 15, 2019
452a91b
1. 修改各Sample设备信息获取方式为设备信息HAL层接口实现。
May 15, 2019
6de2b00
1. 基于影子增加数据模板功能。
May 16, 2019
f6cb325
修改readme,增加文档目录docs及物联网开发平台.md
May 16, 2019
6d26cef
调整文档目录
May 17, 2019
2536d89
update readme
May 30, 2019
a4a6a7e
1. MQTT增加subscribe的event handler,及时通知subscribe状态,可解决log及sys主题在destroy…
spikelin Jun 10, 2019
75b9f02
v3.0.1发布
spikelin Jun 11, 2019
76fe477
1. 数据模板字符串类型支持json类型。
Jul 17, 2019
f757f37
update SDK version
Jul 17, 2019
50e1926
优化数据模板相关示例
Jul 18, 2019
ef3263b
1. OTA支持断点续传。
Aug 9, 2019
7b9c241
Corrected the typo in the template
twowinter Aug 23, 2019
13cc46c
1. 修正http接收的超时判断。
Aug 26, 2019
758c48e
delete all old SDK files
Sep 19, 2019
4f3306c
v3.1.0 C-SDK refactor
Sep 19, 2019
e517183
update document and delete garbled
Sep 24, 2019
d62a536
v3.1.1
Oct 10, 2019
79a95e2
1. 修复OTA内存泄漏
Nov 11, 2019
8ae3ff8
v3.1.2
Nov 11, 2019
213b1a9
fix Windows time format error
Nov 11, 2019
f4553ad
update document about topic forward
spikelin Nov 25, 2019
c1f61a6
fix: 消除编译警告
caodj Nov 29, 2019
e2ef5e0
统一代码缩进风格
spikelin Mar 5, 2020
af362aa
C-SDK v3.1.3
spikelin Mar 5, 2020
60a1419
fix some potential bugs
spikelin Mar 6, 2020
dd9fb78
fix coap running bug
Apr 7, 2020
2ed2231
Merge pull request #25 from caodj/master
spikelin Apr 27, 2020
af25f2e
Merge pull request #23 from twowinter/master
spikelin Apr 27, 2020
33118e9
v3.2.0
Apr 30, 2020
f800546
1. fix bugs of OTA reload and HTTP download
Jun 23, 2020
e398ffa
C-SDK v3.2.1
Aug 4, 2020
7ffb37c
fix Windows build error
Aug 4, 2020
0d2c305
fix build error of AT socket
Oct 13, 2020
5381d0e
v3.2.2
Oct 14, 2020
2616003
v3.2.3
spikelin Nov 3, 2020
74d3502
描述:修复交叉编译时,samples 不能被编译通过的问题。
Nov 16, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
BasedOnStyle: Google
BreakBeforeBraces: Linux
AlignConsecutiveDeclarations: true
AlignConsecutiveMacros: true
AlignConsecutiveAssignments: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false
SortIncludes: false
IndentWidth: 4
ColumnLimit: 120
10 changes: 6 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
/.idea/
./build/
/build
*.o
*.a
/*.cproject
/*.autotools
/.project
/output
/sdk-tests/unit_test/unit_test.BASE
/sdk-tests/unit_test/unit_test.LOCAL
/sdk-tests/unit_test/unit_test.REMOTE
.DS_Store
*.DS_Store
*.crt
*.key
sdk-tests/certs/unittest_private.key
sdk-tests/certs/unittest_private.key
.vscode/settings.json
/.vscode/settings.json
/.vs
upload-fail-save.log
local_fw_info.json
ota.bin
211 changes: 211 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
# 项目信息
project (QCloud_IoT_SDK C)

# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.5)

######################CONFIG BEGIN####################################
# 编译类型: release/debug
set(BUILD_TYPE "release")

# 代码抽取,ON表示根据配置抽取源码到ouput/qcloud_iot_c_sdk目录
set(EXTRACT_SRC OFF)

# 编译工具链
set(COMPILE_TOOLS "gcc")
set(CMAKE_C_COMPILER $ENV{CROSS_COMPILE}gcc)
set(PLATFORM "linux")

#set(COMPILE_TOOLS "MSVC")
#set(PLATFORM "windows")

# 是否打开MQTT通道的总开关
set(FEATURE_MQTT_COMM_ENABLED ON)

# 是否打开设备影子的总开关
set(FEATURE_MQTT_DEVICE_SHADOW ON)

# 是否打开CoAP通道的总开关
set(FEATURE_COAP_COMM_ENABLED OFF)

# 是否打开MQTT通道网关功能
set(FEATURE_GATEWAY_ENABLED ON)

# 是否打开OTA固件升级总开关
set(FEATURE_OTA_COMM_ENABLED ON)

# OTA信令通道类型:MQTT/COAP
set(FEATURE_OTA_SIGNAL_CHANNEL "MQTT")

# MQTT/CoAP接入认证方式,使用证书认证:CERT;使用密钥认证:KEY
set(FEATURE_AUTH_MODE "KEY")

# 接入认证是否不使用TLS,证书方式必须选择使用TLS,密钥认证可选择不使用TLS
set(FEATURE_AUTH_WITH_NOTLS OFF)

# 是否打开多线程功能支持
set(FEATURE_MULTITHREAD_ENABLED ON)

# 是否使能设备动态注册
set(FEATURE_DEV_DYN_REG_ENABLED ON)

# 是否打开日志上报云端功能
set(FEATURE_LOG_UPLOAD_ENABLED OFF)

# 是否打开代码中获取设备信息功能,OFF时将从device_info.json中读取设备信息
set(FEATURE_DEBUG_DEV_INFO_USED OFF)

# 是否打开获取iot后台时间功能
set(FEATURE_SYSTEM_COMM_ENABLED ON)

# 是否使用HTTPS下载固件
set(FEATURE_OTA_USE_HTTPS ON)

# 是否打开AT模组TCP功能
set(FEATURE_AT_TCP_ENABLED OFF)

# 设置AT模组设备(目前只支持esp8266)
set(AT_DEVICE_NAME "esp8266")

# 是否打开AT模组中断接收功能
set(FEATURE_AT_UART_RECV_IRQ OFF)

# 是否打开AT模组多线程功能
set(FEATURE_AT_OS_USED ON)

# 是否打开AT模组调试功能
set(FEATURE_AT_DEBUG OFF)

# 是否打开广播功能
set(FEATURE_BROADCAST_ENABLED ON)

# 是否打开RRPC功能
set(FEATURE_RRPC_ENABLED ON)

# 是否打开远程配置功能
set(FEATURE_REMOTE_CONFIG_MQTT_ENABLED ON)

######################CONFIG END######################################

# 设置CMAKE使用编译工具及编译选项
if (PLATFORM STREQUAL "linux" AND COMPILE_TOOLS STREQUAL "gcc")
if(${BUILD_TYPE} STREQUAL "release")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wall -Wno-error=sign-compare -Wno-error=format -Os -pthread") # 编译选项
elseif(${BUILD_TYPE} STREQUAL "debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Werror -Wall -Wno-error=sign-compare -Wno-error=format -Os -pthread") # 编译选项
endif()
elseif (PLATFORM STREQUAL "windows" AND COMPILE_TOOLS STREQUAL "MSVC")
# 去除相应的警告
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -D_USE_32BIT_TIME_T)
if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W2")
endif()
else ()
#用户自定义
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wall -Wno-error=sign-compare -Wno-error=format -Os") # 编译选项
message(WARNING "User defined platform or compile tools!")
endif()

# 解析配置
if(${BUILD_TYPE} STREQUAL "release")
option(IOT_DEBUG "Enable IOT_DEBUG" OFF)
elseif(${BUILD_TYPE} STREQUAL "debug")
option(IOT_DEBUG "Enable IOT_DEBUG" ON)
else()
message(FATAL_ERROR "INVAILD BUILD_TYPE:${BUILD_TYPE}!")
endif()

if(${FEATURE_AUTH_MODE} STREQUAL "KEY")
option(AUTH_MODE_KEY "Enable AUTH_MODE_KEY" ON)
option(AUTH_MODE_CERT "Enable AUTH_MODE_CERT" OFF)
elseif(${FEATURE_AUTH_MODE} STREQUAL "CERT" AND ${FEATURE_AUTH_WITH_NOTLS} STREQUAL "OFF")
option(AUTH_MODE_KEY "Enable AUTH_MODE_KEY" OFF)
option(AUTH_MODE_CERT "Enable AUTH_MODE_CERT" ON)
option(AUTH_WITH_NOTLS "Enable AUTH_WITH_NOTLS" OFF)
else()
message(FATAL_ERROR "INVAILD AUTH_MODE:${FEATURE_AUTH_MODE} WITH AUTH_WITH_NOTLS:${FEATURE_AUTH_WITH_NOTLS}!")
endif()

if(${FEATURE_OTA_COMM_ENABLED} STREQUAL "ON")
if(${FEATURE_OTA_SIGNAL_CHANNEL} STREQUAL "MQTT" AND ${FEATURE_MQTT_COMM_ENABLED} STREQUAL "ON" )
option(OTA_MQTT_CHANNEL "Enable TA_MQTT_CHANNEL" ON)
elseif(${FEATURE_OTA_SIGNAL_CHANNEL} STREQUAL "COAP" AND ${FEATURE_COAP_COMM_ENABLED} STREQUAL "ON")
option(OTA_MQTT_CHANNEL "Enable TA_MQTT_CHANNEL" OFF)
else()
message(FATAL_ERROR "INVAILD OTA_SIGNAL_CHANNEL:${FEATURE_OTA_SIGNAL_CHANNEL} OR DISABLED OTA_COMM, MQTT_COMM, COAP_COMM!")
endif()
endif()

option(GATEWAY_ENABLED "Enable GATEWAY" ${FEATURE_GATEWAY_ENABLED})
option(AUTH_WITH_NOTLS "Enable AUTH_WITH_NOTLS" ${FEATURE_AUTH_WITH_NOTLS})
option(COAP_COMM_ENABLED "Enable COAP_COMM" ${FEATURE_COAP_COMM_ENABLED})
option(SYSTEM_COMM "Enable SYSTEM_COMM" ${FEATURE_SYSTEM_COMM_ENABLED})
option(MULTITHREAD_ENABLED "Enable Multi-thread support" ${FEATURE_MULTITHREAD_ENABLED})
option(DEV_DYN_REG_ENABLED "Enable DEV_DYN_REG" ${FEATURE_DEV_DYN_REG_ENABLED})
option(LOG_UPLOAD "Enable LOG_UPLOAD" ${FEATURE_LOG_UPLOAD_ENABLED})
option(DEBUG_DEV_INFO_USED "Enable DEBUG_DEV_INFO_USED" ${FEATURE_DEBUG_DEV_INFO_USED})
option(OTA_USE_HTTPS "Enable OTA_USE_HTTPS" ${FEATURE_OTA_USE_HTTPS})
option(AT_TCP_ENABLED "Enable AT_TCP" ${FEATURE_AT_TCP_ENABLED})
option(BROADCAST_ENABLED "Enable BROADCAST" ${FEATURE_BROADCAST_ENABLED})
option(RRPC_ENABLED "Enable RRPC" ${FEATURE_RRPC_ENABLED})
option(REMOTE_CONFIG_MQTT "Enable REMOTE_CONFIG_MQTT" ${FEATURE_REMOTE_CONFIG_MQTT_ENABLED})

if(AT_TCP_ENABLED STREQUAL "ON")
option(AT_UART_RECV_IRQ "Enable AT_UART_RECV_IRQ" ${FEATURE_AT_UART_RECV_IRQ})
option(AT_OS_USED "Enable AT_UART_RECV_IRQ" ${FEATURE_AT_OS_USED})
option(AT_DEBUG "Enable AT_DEBUG" ${FEATURE_AT_DEBUG})
else()
option(AT_UART_RECV_IRQ "Enable AT_UART_RECV_IRQ" OFF)
option(AT_OS_USED "Enable AT_UART_RECV_IRQ" OFF)
option(AT_DEBUG "Enable AT_DEBUG" OFF)
endif()

configure_file (
"${PROJECT_SOURCE_DIR}/tools/cmake_scripts/config.h.in"
"${PROJECT_SOURCE_DIR}/include/config.h"
@ONLY
)

# 头文件目录
include_directories(${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/exports
${PROJECT_SOURCE_DIR}/platform/at_device/esp8266
${PROJECT_SOURCE_DIR}/sdk_src/internal_inc
${PROJECT_SOURCE_DIR}/external_libs/mbedtls/include)

file(GLOB src_include ${PROJECT_SOURCE_DIR}/include/*.h)
file(GLOB src_inc_export ${PROJECT_SOURCE_DIR}/include/exports/*.h)
file(COPY ${src_include} DESTINATION ${PROJECT_SOURCE_DIR}/output/${BUILD_TYPE}/include)
file(COPY ${src_inc_export} DESTINATION ${PROJECT_SOURCE_DIR}/output/${BUILD_TYPE}/include/exports)

if(${EXTRACT_SRC} STREQUAL "ON" AND NOT DEFINED SAMPLE_ONLY)
file(GLOB src_internal_inc ${PROJECT_SOURCE_DIR}/sdk_src/internal_inc/*.h)
file(COPY ${src_include} DESTINATION ${PROJECT_SOURCE_DIR}/output/qcloud_iot_c_sdk/include)
file(COPY ${src_inc_export} DESTINATION ${PROJECT_SOURCE_DIR}/output/qcloud_iot_c_sdk/include/exports)
file(COPY ${src_internal_inc} DESTINATION ${PROJECT_SOURCE_DIR}/output/qcloud_iot_c_sdk/sdk_src/internal_inc)

if(AT_TCP_ENABLED STREQUAL "ON")
file(GLOB src_at_inc ${PROJECT_SOURCE_DIR}/platform/at_device/${AT_DEVICE_NAME}/*.h)
file(COPY ${src_at_inc} DESTINATION ${PROJECT_SOURCE_DIR}/output/qcloud_iot_c_sdk/platform)
endif()
endif()

# 添加源代码目录
if(NOT DEFINED SAMPLE_ONLY)
add_subdirectory(${PROJECT_SOURCE_DIR}/sdk_src)
add_subdirectory(${PROJECT_SOURCE_DIR}/platform)
add_subdirectory(${PROJECT_SOURCE_DIR}/external_libs/mbedtls)
endif()

add_subdirectory(${PROJECT_SOURCE_DIR}/samples)
if(SAMPLE_ONLY STREQUAL "ON")
message(STATUS "Only compile samples!")
endif()

# 证书及设备信息
if(NOT DEFINED SAMPLE_ONLY)
file(COPY ${PROJECT_SOURCE_DIR}/certs DESTINATION ${PROJECT_SOURCE_DIR}/output/${BUILD_TYPE}/bin)
file(COPY ${PROJECT_SOURCE_DIR}/device_info.json DESTINATION ${PROJECT_SOURCE_DIR}/output/${BUILD_TYPE}/bin)
endif()
17 changes: 17 additions & 0 deletions CMakeSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"configurations": [
{
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [
"msvc_x86"
],
"buildRoot": "${projectDir}\\build\\${name}",
"installRoot": "${projectDir}\\build\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": ""
}
]
}
Loading