這需求有點奇怪,不過這倒是我想要的編譯流程
先從Golang來說吧,1.11前的版本只會把dependency module都裝入GOPATH中,就算有godep
之類的東西也覺得不好用
由於自己是Developer,需要分析Module間的互動,甚至改改程式碼,分析一下,放在GOPATH不是不好,只是我想要以下的需求
– 修改Dependcny Module的程式碼,由於牽一髮動全身,改動之後可能造成其他相依於此Module的全部掛點
– 希望放在Repo附近,而不是在GOPATH底下尋找
Cargo跟GoLang的行為模式差不多,Module放在.cargo
底下
不利於開發研究
於是找出一套屬於自己的方式了
Golang
首先,先安裝到Golang 1.11以上
以go-fastdfs舉例,他缺少go.mod
,於是我們自行補上
1 | $ git clone https://github.com/sjqzhang/go-fastdfs |
看來真的是用vendor目錄下的Module下去編譯
Rust
Cargo的部分麻煩一點
首先先安裝cargo-vendor
1 | $ cargo install cargo-vendor |
用yamux來舉例
1 | $ git clone https://github.com/paritytech/yamux |
如果要修改vendor裡面的東西比較麻煩
假設我們修改vendor/tokio-io/src/framed_read.rs
下build之後可能出現
1 | $ cargo build |
由於我們改了檔案,checksum算出來就不同了
簡易的方案就是在root dir的Cargo.tmol
上加上
1 | [replace] |
注意版本號要跟vendor的目錄相同,不然無法編譯