-
Notifications
You must be signed in to change notification settings - Fork 33
package.json
Initial content should be: (paste this into empty kendryte-package.json)
{
"$schema": "vscode://schemas/CMakeLists"
}
Available fields:
Field | Type | Description |
---|---|---|
name | String | name of your project and exe/lib name, only allow to use alphanumeric, _ , -
|
version | String | Your package version, like "1.2.3" |
type | Selection | Set to excutable or library based on your project type |
source | String Set | Array of file path globs, cmake will find source from these path |
include | String Set | Array of folder path, add to global c/c++ include path. When your project is a library, your exported .h should be placed inside one of this folders |
dependency | String Map | An ID to "download url" map, download url can be version number if download from package registry |
definitions | String(or Number) Map | Key value pairs in this object will becomes #define during compile. When the key ends with :RAW , or the value is a number, the value will not wrapped with double quotes. The value can be overwrite from parent project
|
properties | String Map | Key value pairs in this object will add to CMake set_target_properties function |
extraList | String | A file path, it's content will merge into generated cmakelists.txt file |
c_flags | String Set | Flags pass to gcc
|
cpp_flags | String Set | Flags pass to g++
|
c_cpp_flags | String Set | Flags pass both to gcc and g++
|
link_flags | String Set | Flags pass to ld
|
ld_file | String | File path to a ld file |
entry | String | Only used by example projects, this file will opened when example downloaded |
exampleSource | String Set | No real effect, only a meta tag of library project |
If a project's kendryte-package.json
contains dependency field, IDE can download them from a registry (currentlly this function must trigger by click a menu item).
After installed library (eg. SDK) from package manager, IDE will modify your kendryte-package.json
. It may cause wrong result if the JSON has any error.
All packages will store inside the "kendryte_libraries" folder, one package per folder.
The "dependencies of dependency" will be flatten, "kendryte_libraries" is not a tree structure.
If two of different package is required, only one will exists, if you want control it's version, please set it in your root kendryte-package.json
file.
You must set source
filed in kendryte-package.json
, or CMake will not found your source files.
Source file paths should relative to the kendryte-package.json
file. NOT a absolute path like "~/project" or "C:\Project"
Path is case-sensitive. src/main.c
and SRC/main.C
is different.
You can use glob() to include many files, or write a full list to them.
Do not use something like "src/" to "include all files" in a folder, It's dangerous!
At least set extension names like: "src/*.c"
This field is designed for library, let people pass options to your library. executable project can simple define anything in a .c
file.
Examples:
-
"SOMETHING": "VALUE"
→#define SOMETHING "VALUE"
-
"SomeThing": 123
→#define SomeThing 123
-
"ADD(A,B):RAW": "A + B"
→#define ADD(A,B) A + B