大家好,
微软的Azure新出了一个Azure SDK for C,目前由于项目需要打算将其移植到RT-Thread。移植完以后打算做成软件包共享给社区。但目前移植过程中遇到问题,求助大家。
问题描述:
1.由于Azure SDK for c是纯C写的代码,Azure官方使用cmake进行构建;
2.我将Azure SDK for C放入packages文件夹下,并在其根目录下增加了一个SConscript文件用于Scons的构建。
Sconscript内容如下:
Import('RTT_ROOT')
from building import *
# get current directory
cwd = GetCurrentDir()
# The set of source files associated with this SConscript file.
src = Glob('sdk/src/azure/iot/*.c')
src += Glob('sdk/src/azure/core/*.c')
CPPPATH = [cwd + 'sdk/inc/azure/']
CPPPATH += [cwd + 'sdk/inc/azure/core/']
CPPPATH += [cwd + 'sdk/inc/azure/core/internal/']
CPPPATH += [cwd + 'sdk/inc/azure/iot/']
CPPPATH += [cwd + 'sdk/inc/azure/iot/internal/']
CPPPATH += [cwd + 'sdk/src/azure/core/']
CPPPATH += [cwd + 'sdk/src/azure/iot/']
group = DefineGroup('AzureSDK', src, depend = ['PKG_USING_AZURE_SDK'], CPPPATH = CPPPATH)
Return('group')
3.同时,暂时在rtconfig.h中手动增加了PKG_USING_AZURE_SDK;
4.使用scons --target=mdk5生成keil工程后,查看keil工程,代码已经加入工程;
5.编译报错,报错信息如下:
6.我查看了keil的头文件包含情况,报错的头文件已经包含
7.在Azure SDK的代码中,头文件如下包含:
8.Azure SDK for C的目录机构如下:
所以,我想请教一下,是我的sconcript写的有问题吗?我该如何修改呢?还请各位大佬指个方向。小弟万分感谢!
试了下,好像不行。
inc下面的其他目录里面也有内容的,不添加路径的话,是如何找到的呢?
CPPPATH + 的路径缺个斜杠,导致你的路径有点问题, 路径前缀应该是 packages/azure-sdk-for-c/sdk/,而你 keil 下的是 packages/azure-sdk-for-csdk,目录的问题理一下,不行就先手动添加以下
感谢,已经编译通过了。
重写了SConscript文件,目前已经编译通过。