Erhu
一个创新的包管理,可以用来管理C语言的包,或者管理算法的包,理论可以用在各种地方,目前主要支持C++,算法管理。
更行记录
- 0.1.10 增加对tar.gz的支持,如果是编译工具且有文件链接,必须采用 tar.gz
install
gem install erhu
如何使用
在根目录里面建立ErhuFile
, 当前也可以使用erhu init
用于拉取依赖
target "./thirdparty"
git "https://github.com/Tencent/rapidjson", tag: "v1.1.0"
git "https://github.com/DaveGamble/cJSON", tag: "v1.7.15"
git "https://github.com/catchorg/Catch2", tag: "v3.3.2"
package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"
然后就在项目目录中使用 erhu 命令即可拉取对应的代码
示例项目可以看 demo 目录
注意事项
- 请不要随便用git来做依赖管理
- package只支持zip压缩包,暂时没有计划做其他
- ErhuFile着色采用ruby编程语言即可,同时整个文件均可执行ruby脚本
- 判断系统安装对应的包,请看高级用法的系统判断
- 下载后可以有高级使用办法,比如进入里面继续cmake等等,具体请看高级用法的安装后处理
高级用法
项目环境变量使用
erhu 集成了dotenv,支持项目中通过.env来指定环境变量,具体可以查看demo目录中的.env文件
.env文件中的环境变量在 Rakefile
和 erhu exec
中可以使用
系统判断
if platform.windows?
package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"
end
安装后处理
警告一般不建议这么做,而是采用Rakefile的方式来做处理
git "https://github.com/Tencent/rapidjson", tag: "v1.1.0" do |repo, env|
end
package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson" do |package_file_path, env|
unzip(package_file_path, "./libs/cjson")
ungzip(tar_gz_archive, destination)
end
具体使用案例,可以查看项目里的 demo 目录
总结
这是一个很灵活的包管理,希望你用的开心,开源协议MIT