使用 cspkg 前,需要将 Covscript 更新至最新版:若是老版本,则利用 CovScript Installer 将原有的 Covscript 卸载(请一定要使用Installer卸载,否则下载新版本后会导致环境变量冲突);

打开官网CovScript官网,找到Windows x64(相对应的系统)的稳定版,并下载至本机。

打开powershell 或 cmd 终端,输入 cs -v,若输出相关信息,则更新环境成功,可以开始尝试使用cspkg。

终端中输入cspkg查看使用帮助,现有以下参数:

参数 解释
install (package) 从源下载安装一个包至本地
remove (package) 从本地删除指定的包
config (key) 添加源时使用
upgrade 更新源中各包的版本
build (url)(path) 利用cspkg编译包(主要用于自动生成.json文件)
list 查看所有已安装包的详细信息
help 获取帮助信
version 查看cspkg版本信息

参数可简化为 (-首字母),如cspkg help可以使用cspkg -h代替。

此处仅教学如何封装一个包,便不再赘述。

可以先下载示例包,探索一下安装的过程。

终端中使用 cspkg config sourcecspkg list 查看本地所拥有的源(source)和包(package)。

使用 cspkg config source --app https://raw.githubusercontent.com/covscript/package-example/main/cspkg-source/index.json添加测试源。

再使用 cspkg install testcse 下载指定的包,若搜索到该包,会将所有依赖列出,并请求确认。也可以加入参数 --yes 跳过确认。等待片刻,显示下载完成,即导入包成功。可再次使用 cspkg list 命令查看导入包信息。

需要连接github下载相应的包。



我们提供了package示例,以使大家能照葫芦画瓢,更简单地使用该一功能。

打开示例的 repository ,将其中的各文件(夹)进行以下分类:

1.

.github/workflows

run_test.csc

将包挂载在github服务器所需要的脚本,是最后一步才需要的操作。

2.

cspkg/

testcsp.csp

用于csp包所需要的源文件

3.

csbuild/

cspkg-source/

CMakeLists.txt

test.cpp

用于cse包所需要的源文件。

其中23是提供源数据,1是利用23生成一定的文件,并挂载在 github 上。再以 github 作为源,搜索上面所挂在的包并下载至本地。中途经历了多次寻址的过程,若对cspkg下载步骤感兴趣,可看最后一个板块,了解详细步骤。

可现按照示例在本地使用2或者2的文件生成包,使用 import 导入。检查无误后再使用1中文件挂载在服务器上,生成源并导入至 cspkg 中。

我们以无依赖的csp为例,封装一个只有输出“hello my package”的包:

建立一个文件夹,命名为testPackage,创建my_package.csp,创建 repo:my_package。

package my_package
 
function test()
system.out.println(“hello my package”)
end

保存后,可同路径创建测试程序,输入以下代码:

import my_package
 
my_package.test()

将这my_package.csp放至repo中,再在本地创建testPackage/cspkg文件夹,创建文件my_package.json,输入以下内容:

{
    "Name": "my_package",
    "Info": "Package Example: CSP",
    "Author": "jin1xiao3long2",
    "Version": "1.0.0",
    "Target": 	"https://raw.githubusercontent.com/jin1xiao3long2/my_package/main/testcsp.csp",
    "Dependencies": []
}

其中,Name对应包名,Info对应包的信息,Author填入包作者信息,Target为 csp 文件在 github 的地址(注:此处需要点击进入文件,并点击文本栏右上角的 Raw,此时所对应的URL则为该 target 的具体内容),若有依赖,则需要将包名填入Dependencies中,不用带后缀,用逗号隔开。如无依赖,则为空即可。 创建文件夹cspkg-source,创建以下文件:index.jsonuniversal.json。在index.json中,输入以下内容:(复制粘贴即可)

{
    "base_url": "https://raw.githubusercontent.com/jin1xiao3long2/my_package/main/cspkg-source/",
     "universal": "universal.json"
}

universal.json中,输入以下内容:(复制粘贴即可)

{
    "my_package": "https://raw.githubusercontent.com/jin1xiao3long2/my_package/main/cspkg/my_package.json"
}

将以上两个文件每个<URL>中的jin1xiao3long2/my_package均修改为注册的repo的地址,将键”my_package”修改为封装的包名。

全部操作完毕,此时repo里应有my_package.csp,cspkg-sourse文件夹。接下来便是将包挂载至github上。

我们以无依赖的cse为例,封装一个只有输出“hello my package”的包:

建立一个文件夹,命名为testPackage,创建my_package.cpp,创建 repo:my_package

#include <iostream>
 
void hello(){
Std::cout  <<  “hello, my package”  <<  std::endl;
}
 
#include <covscript/cni.hpp>
#include <covscript/dll.hpp>
CNI_ROOT_NAMESPACE{
CNI(hello)
}

创建CMakeLists.txt,将示例中的内容复制过来,并修改以下内容:

# Your Package Name
//add_library(testcse SHARED testcse.cpp)
add_library(package SHARED my_package.cpp) #更换源文件名
#将testcse全换为该处所设的package
# Linking with CovScript SDK
#target_link_libraries(testcse covscript)
target_link_libraries(package covscript)
 
# Output options, change it to your Package ID
#set_target_properties(testcse PROPERTIES OUTPUT_NAME testcse)
set_target_properties(package PROPERTIES OUTPUT_NAME my_package)
#将该处输出文件名testcse改为包名(my_package)
 
#set_target_properties(testcse PROPERTIES PREFIX "")
set_target_properties(package PROPERTIES PREFIX "")
 
#set_target_properties(testcse PROPERTIES SUFFIX ".cse")
set_target_properties(package PROPERTIES SUFFIX ".cse")

新建build目录,并运行cmake ..make(on Windows)生成.cse文件。

新建csbuid目录,写入以下内容:

{
    "Type": "Extension",
    "Name": "testcse",
    "Info": "Package Example: CSE",
    "Author": "Covariant Script Organization",
    "Version": "1.0.0",
    "Target": "build/my_package.cse",
    "Dependencies": []
}

其中Name修改为包名,Info对应包的信息,Author填入包作者信息,Target修改为指定文件名,若有依赖,则需要将包名填入Dependencies中,不用带后缀,用逗号隔开。如无依赖,则为空即可。

testPackage目录下,执行cspkg build <URL>

注:此处的<URL>为https://github.com/jin1xiao3long2/my_package/releases/download/windows-schedule/ ,将jin1xiao3long2/my_package修改为注册的repo的地址。

cspkg 会生成两个文件,分别存为 cspkg-repo\index_files\packages\windows\x86_64\testcse.jsoncspkg-repo\windows\x86_64\testcse.cse。 若加入参数–flat,则会将两个文件直接生成在本目录,是否加参数与最终目的不影响,在本地操作仅为测试。

创建文件夹cspkg-source,创建以下文件:index.jsonlinux_x86_64.jsonwindows_x86_64.json。在index.json中,输入以下内容:(复制粘贴即可)

{
    "base_url": "https://raw.githubusercontent.com/jin1xiao3long2/my_package/main/cspkg-source/",
      "windows": {
        "x86_64": "windows_x86_64.json"
    },
    "linux": {
        "x86_64": "linux_x86_64.json"
    }
}

windows_x86_64.json中,输入以下内容:(复制粘贴即可)

{
    "my_package": "https://github.com/jin1xiao3long2/my_package/releases/download/windows-schedule/testcse.json"
}

linux_x86_64.json中,输入以下内容:(复制粘贴即可)

{
    "my_package": "https://github.com/jin1xiao3long2/my_package/releases/download/ubuntu-schedule/testcse.json"
}

将以上三个文件每个<URL>中的jin1xiao3long2/my_package均修改为注册的repo的地址,将键my_package修改为封装的包名。

本地操作完成后,将my_package.cppCMakeLists.txtcsbuild文件夹,cspkg-source文件夹上传至repo。接下来便是将包挂载至github上。

将示例中的.github文件夹下载至本地,首先修改build.bat文件:

将最后一行中的:

cspkg build https://github.com/covscript/package-example/releases/download/windows-schedule/ . --flat

将其中的covscript/package-example修改为注册的repo的地址。

接下来修改 schechule.yml:

on:schedual: - cron: ‘0 */4 * * *’

为每四小时更新一次,可根据需要调整更新频率(修改斜杠/后的数字)。

首先找到 #Run tests 的注释,将后两个语句块删去(以C:\build\bin\cs -i .\build .\run_test.csc)结尾,关于测试的程序,在下一步再加入。

若是csp包,则找到 #Build Extension On Windows/Ubuntu,将一整个语句块都删去。

若是cse包,找到#Build Extension on Ubuntu下的cspkg build https://github.com/covscript/packageexample/releases/download/ubuntu-schedule/ .. –flat, 将其中的 covscript/package-example 修改为自己注册的 repo

.github 文件夹上传至 repo 中,并在 Action 中查看自动编译情况。

若有编译错误,请再次检测是否有哪处修改错误或尚未修改。

当编译成功后(冒出绿色的勾勾),则可以在 repon中加入 run_test.csc

代码参考:

import my_package
my_package.test()

并将之前删去的两个语句块加回schedule.yml,重新上转至repo,查看编译情况。

完整的目录如下:

Csp文件:

Mypackage
|_.github
  |_workflows
    |_build.bat
    |_schedule.yml  
|_cspkg-source
  |_index.json
  |_universal.json
|_pacakge_name.csp
|_run_test.csc

Cpp(cse)文件

Mypackage
|_.github
  |_workflows
    |_build.bat
    |_schedule.yml
|_cspkg-source
  |_index.json
  |_linux_x86_64.json
  |_windows_x86_64.json
|_pacakge_name.cpp
|_package_name.json
|_CMakeLists.txt
|_run_test.csc

当编译过了后,则可以将自己的repo当作一个包的源,在终端中使用如下命令:

cspkg config source –app https://raw.githubusercontent.com/jin1xiao3long2/my_package/main/cspkg-source/index.json

repo 中查看 index.json 文件内容,右上角点击 Raw,此时页面的 URL 则为该 <URL> 参数。可以使用 cspkg config source 查看自己所有源。

使用 cspkg install package_name 下载刚刚导入的包。package_name 为自己封装的包名。下载成功后,可使用 cspkg list 查看是否导入成功,也可直接写程序验证。

若我们想要在自己的服务器中导入多个包,则直接在repo添加新的包源码,重复同样的操作即可。当我们想要分享自己的包时,仅用将源分享给包使用者即可。