===== 包管理器 CSPKG ===== [[https://github.com/covscript/package-example|Package 示例: https://github.com/covscript/package-example]] [[https://covscript.org.cn/|CovScript官网: https://covscript.org.cn/]] ==== 更新环境 ==== 使用 cspkg 前,需要将 Covscript 更新至最新版:若是老版本,则利用 CovScript Installer 将原有的 Covscript 卸载(请一定要使用Installer卸载,否则下载新版本后会导致环境变量冲突); 打开官网 [[https://covscript.org.cn/|CovScript官网]], 找到Windows x64(相对应的系统)的稳定版, 并下载至本机。 打开 powershell 或 cmd 终端,输入 cs -v,若输出相关信息,则更新环境成功,可以开始尝试使用cspkg。 ==== cspkg的使用 ==== 终端中输入''cspkg''查看使用帮助,现有以下参数: ^参数 ^解释 ^ |install (package) |从源下载安装一个包至本地 | |remove (package) |从本地删除指定的包 | |config (key) |添加源时使用 | |upgrade |更新源中各包的版本 | |build (url)(path) |利用cspkg编译包(主要用于自动生成.json文件) | |list |查看所有已安装包的详细信息 | |help |获取帮助信 | |version |查看cspkg版本信息 | 参数可简化为 (**-首字母**),如''cspkg help''可以使用''cspkg -h''代替。 此处仅教学如何封装一个包,便不再赘述。 ==== 安装示例的包 ==== 可以先下载示例包,探索一下安装的过程。 终端中使用 ''cspkg config source'' 与 ''cspkg 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下载相应的包。** ----- \\ ===== 封装并发布自己的包 ===== ==== 认识示例源代码结构 ==== 我们提供了[[https://github.com/covscript/package-example|package示例]],以使大家能照葫芦画瓢,更简单地使用该一功能。 打开示例的 repository ,将其中的各文件(夹)进行以下分类: 1. ''.github/workflows'' ''run_test.csc'' 将包挂载在github服务器所需要的脚本,是最后一步才需要的操作。 2. ''cspkg/'' ''testcsp.csp'' 用于csp包所需要的源文件 3. ''csbuild/'' ''cspkg-source/'' ''CMakeLists.txt'' ''test.cpp'' 用于cse包所需要的源文件。 其中**2**和**3**是提供源数据,**1**是利用**2**和**3**生成一定的文件,并挂载在 github 上。再以 github 作为源,搜索上面所挂在的包并下载至本地。中途经历了多次寻址的过程,若对//cspkg//下载步骤感兴趣,可看最后一个板块,了解详细步骤。 可现按照示例在本地使用**2**或者**2**的文件生成包,使用 import 导入。检查无误后再使用**1**中文件挂载在服务器上,生成源并导入至 cspkg 中。 ==== 在本地包装一个csp ==== 我们以无依赖的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.json'',''universal.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" } 将以上两个文件每个中的jin1xiao3long2/my_package均修改为注册的repo的地址,将键”my_package”修改为封装的包名。 全部操作完毕,此时repo里应有my_package.csp,cspkg-sourse文件夹。接下来便是将包挂载至github上。 ==== 在本地包装一个cse ==== 我们以无依赖的cse为例,封装一个只有输出''"hello my package"''的包: 建立一个文件夹,命名为**testPackage**,创建''my_package.cpp'',创建 **repo:my_package**。 #include void hello(){ Std::cout << “hello, my package” << std::endl; } #include #include 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 ''。 **注:此处的为https://github.com/jin1xiao3long2/my_package/releases/download/windows-schedule/ ,将jin1xiao3long2/my_package修改为注册的repo的地址。** **cspkg** 会生成两个文件,分别存为 ''cspkg-repo\index_files\packages\windows\x86_64\testcse.json''与''cspkg-repo\windows\x86_64\testcse.cse''。 若加入参数''--flat'',则会将两个文件直接生成在本目录,是否加参数与最终目的不影响,在本地操作仅为测试。 创建文件夹**cspkg-source**,创建以下文件:''index.json'',''linux_x86_64.json'',''windows_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" } 将以上三个文件每个中的''jin1xiao3long2/my_package''均修改为注册的repo的地址,将键''my_package''修改为封装的包名。 本地操作完成后,将''my_package.cpp'',''CMakeLists.txt'',''csbuild''文件夹,''cspkg-source''文件夹上传至''repo''。接下来便是将包挂载至**github**上。 ==== 将包挂载在自己的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'' 中查看自动编译情况。 若有编译错误,请再次检测是否有哪处修改错误或尚未修改。 当编译成功后(冒出绿色的勾勾),则可以在 ''repo''n中加入 ''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'' 则为该 '''' 参数。可以使用 ''cspkg config source'' 查看自己所有源。 使用 ''cspkg install package_name'' 下载刚刚导入的包。''package_name'' 为自己封装的包名。下载成功后,可使用 ''cspkg list'' 查看是否导入成功,也可直接写程序验证。 若我们想要在自己的服务器中导入多个包,则直接在repo添加新的包源码,重复同样的操作即可。当我们想要分享自己的包时,仅用将源分享给包使用者即可。