Skip to content
sbYm edited this page Jan 2, 2019 · 1 revision

kendryte-package.json 内容

初始状态:(可以直接粘贴到刚创建的kendryte-package.json里)

{
  "$schema": "vscode://schemas/CMakeLists"
}

可用的字段:

字段 类型 说明
name 字符串 你的项目名称,同时是编译结果的文件名,只能用数字、字母、下划线、减号
version 字符串 你的项目的版本,例如:"1.2.3"
type 二选一 excutablelibrary,根据项目实际类型选择
source 字符串数组 文件路径匹配字符串,CMake根据这个找到你的代码
include 字符串数组 一组文件夹路径,会添加到全局C/C++包含路径中。如果项目类型是library,则导出的.h文件应该出现在这些目录中
dependency 字符串Map 依赖包ID对下载链接的映射。下载链接也可以是版本号
definitions 字符串Map 编译的时候转换成#define,具体看下面说明。这里定义的值可以被父项目覆盖
properties 字符串Map 生成调用 CMake 的 set_target_properties 函数
extraList 字符串 一个文件路径,生成cmakelists.txt的时候,它的内容会被添加进去
c_flags 字符串数组 gcc的选项
cpp_flags 字符串数组 g++的选项
c_cpp_flags 字符串数组 同时给gccg++的选项
link_flags 字符串数组 ld的选项
ld_file 字符串 ld文件的路径
entry 字符串 示例项目用的一个字段,示例从包管理器里下载以后它会被打开
exampleSource 字符串数组 没有实际作用,仅仅是library项目的一个数据

一些依赖包的说明

如果一个项目的kendryte-package.json包含dependency字段,IDE就会下载他的依赖(目前这个功能通过点击菜单按钮实现)。

当手动安装了一个依赖的时候,IDE会改你的kendryte-package.json。如果当时JSON文件有错误,这个操作可能导致意外结果。

所有下载的包都放在了"kendryte_libraries"文件夹里,每个包一个文件夹。
所有依赖的依赖会被拍平,"kendryte_libraries"里没有树状的依赖结构。

如果一个包被依赖多次,且版本不同,则只有一个版本会保留,如果你需要详细控制它的具体版本,你就需要自己定义一个依赖覆盖掉其他人指定的。

正确设置Source字段

你必须在kendryte-package.json里设置source,否则CMake找不到你的代码。

源文件路径相对于kendryte-package.json,不要用绝对路径(比如~/project、C:\project)
路径要区分大小写。src/main.cSRC/main.C不是同一个文件。

你可以用glob(也就是*)来一次指定多个文件,也可以把所有源文件直接写进去。
不要用类似"src/"的东西来”指定所有文件“。这样很容易出问题。
至少要抱括它们的扩展名。(比如 src/
.c)

definitions

之所以有这个字段,是为了写库的时候,可以让用的人给你传参数。如果写的是可运行的项目,则直接把定义写到一个.c文件里就行了。

举例:(如果不是:RAW结尾,内容就被当成字符串或数字)

  • "STRING_TAG": "WARN"#define STRING_TAG "WARN"
  • "LOGIC_HIGH": 1#define LOGIC_HIGH 1
  • "PIN_LED:RAW": "IO_32"#define LOGIC_HIGH IO_32
  • "ADD(A,B):RAW": "A + B"#define ADD(A,B) A + B