package.json.cn
sbYm edited this page Jan 2, 2019
·
1 revision
初始状态:(可以直接粘贴到刚创建的kendryte-package.json里)
{
"$schema": "vscode://schemas/CMakeLists"
}
可用的字段:
字段 | 类型 | 说明 |
---|---|---|
name | 字符串 | 你的项目名称,同时是编译结果的文件名,只能用数字、字母、下划线、减号 |
version | 字符串 | 你的项目的版本,例如:"1.2.3" |
type | 二选一 |
excutable 或 library ,根据项目实际类型选择 |
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 | 字符串数组 | 同时给gcc 和g++ 的选项 |
link_flags | 字符串数组 | 给ld 的选项 |
ld_file | 字符串 | ld文件的路径 |
entry | 字符串 | 示例项目用的一个字段,示例从包管理器里下载以后它会被打开 |
exampleSource | 字符串数组 | 没有实际作用,仅仅是library 项目的一个数据 |
如果一个项目的kendryte-package.json
包含dependency
字段,IDE就会下载他的依赖(目前这个功能通过点击菜单按钮实现)。
当手动安装了一个依赖的时候,IDE会改你的kendryte-package.json
。如果当时JSON文件有错误,这个操作可能导致意外结果。
所有下载的包都放在了"kendryte_libraries"文件夹里,每个包一个文件夹。
所有依赖的依赖会被拍平,"kendryte_libraries"里没有树状的依赖结构。
如果一个包被依赖多次,且版本不同,则只有一个版本会保留,如果你需要详细控制它的具体版本,你就需要自己定义一个依赖覆盖掉其他人指定的。
你必须在kendryte-package.json
里设置source
,否则CMake找不到你的代码。
源文件路径相对于kendryte-package.json
,不要用绝对路径(比如~/project、C:\project)
路径要区分大小写。src/main.c
和SRC/main.C
不是同一个文件。
你可以用glob(也就是*)来一次指定多个文件,也可以把所有源文件直接写进去。
不要用类似"src/"的东西来”指定所有文件“。这样很容易出问题。
至少要抱括它们的扩展名。(比如 src/.c)
之所以有这个字段,是为了写库的时候,可以让用的人给你传参数。如果写的是可运行的项目,则直接把定义写到一个.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