模块功能
kfs模块功能
kfs是基于Python和JavaScript封装的可执行程序,其作用是辅助管理插件的编译,
只需要写好package.json文件的配置信息,执行kfs extension build就可以自动识别插件的代码类型是cpp还是python,
自动生成CMakeLists.txt文件,根据配置编译生成CPython模块或可执行程序。
kfs文件路径
Windows: {kungfu安装目录}/resources/kfc/kfs.exe
Linux: {kungfu安装目录}/resources/kfc/kfs
MacOS: {kungfu安装目录}/Contents/Resources/kfc/kfs
小技巧
Windows与MacOS版本可通过图形化界面的菜单栏, 文件->打开功夫安装目录, 可以直接打开 {kungfu安装目录}/resources 目录
extension模块
install
下载package.json里面配置的依赖项目
$ kfs extension install
compile
编译代码生成二进制文件,
如果是cpp代码,根据package.json配置编译生成CPython模块或可执行程序。
如果是Python代码,使用Nuitka编译生成二进制库文件。
$ kfs extension compile
build
先检测依赖的库文件是否已经下载,若没下载则进行下载。如果package.json配置的是cpp代码项目,会自动生成CMakeLists.txt配置文件。然后在执行kfs extension compile的操作生成二进制文件。
$ kfs extension build
package.json文件字段范例:
"kungfuDependencies": {
"xtp": "v2.2.37.4"
},
"kungfuBuild": {
"cpp": {
"target": "bind/python",
"links": {
"windows": [
"xtptraderapi",
"xtpquoteapi"
],
"linux": [
"xtptraderapi",
"xtpquoteapi"
],
"macos": [
"xtptraderapi",
"xtpquoteapi"
]
}
}
}
这是xtp柜台的编译配置信息,执行 kfs extension build 之后,会先下载xtp的v2.2.37.4版本的API头文件和库文件,生成的CMakeLists.txt的配置文件中,设置编译输出为CPython模块,链接库xtptraderapi和xtptraderapi。
小技巧
注: 如果曾经在下载过程中被打断,导致目录下有依赖的库目录但是文件不全,此时检测结果会视为已下载,需要删除 __kungfulibs__ 和 __pypackages__ 目录再执行kfs extension build 命令。
package
将dist目录中编译生成的文件打包到压缩包中
$ kfs extension package
clean
删除build目录和dist目录中编译生成的文件
$ kfs extension clean
format
格式化代码:
cpp的代码使用clang-format进行格式化
Python的代码使用black进行格式化
$ kfs extension format
list
展示kungfu云环境里支持的柜台API列表,列表中的API版本只需要加到package.json的kungfuDependencies字段中, 在执行build的时候就可以自动下载API的头文件和库文件,并且自动配置CMakeLists.txt配置信息。
如果列表中没有您需要的柜台版本,可以联系我们进行添加。
$ kfs extension list
package.json文件字段范例:
"kungfuDependencies": {
"xtp": "v2.2.37.4",
"ctp": "v6.6.8"
}
kfs extension install 时会将xtp的v2.2.37.4版本的API头文件和库文件下载到__kungfulibs__/xtp/v2.2.37.4目录下,将ctp的v6.6.8版本的API头文件和库文件下载到__kungfulibs__/ctp/v6.6.8。