2015-06-07 56 views
5

有沒有辦法與不在當前包路徑中的庫鏈接。與構建文件夾外的Windows庫鏈接

這個link建議將一切放在本地目錄下。我們的軟件包安裝在別處的某個存儲庫中我只是想在Windows上指定它的libpath。

authors = ["Me"] 
links = "CDbax" 

[target.x86_64-pc-windows-gnu.CDbax] 
rustc-link-lib = ["CDbax"] 
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"] 
root = "Z:/Somepath//CPP/CDbax/x64/Debug/" 

但是,試圖構建貨物-v給我

package `hello v0.1.0 (file:///H:/Users/Mushfaque.Cradle/Documents/Rustc/hello)` specifies that it links to `CDbax` but does not have a custom build script 

從貨物build script support指導,這似乎表明,這應該工作。但我可以看到它沒有添加路徑。然後將lib移入本地bin\x68_64-pc-windows-gnu\路徑。

更新 感謝下面的答案,我想我會更新這個,以給出我的機器上運行的最終結果,以便其他人發現它很有用。

在Cargo.toml添加

links = "CDbax" 
build = "build.rs" 

即使沒有build.rs文件,它似乎需要它(?)與

package `xxx v0.1.0` specifies that it links to `CDbax` but does not have a custom build script 

其次Vaelden否則抱怨回答的創建.cargo中的'config'文件

如果這是一個子包,即使它是一個dll,也不需要將links =標記放在父包中。即使是「貨運」。我以爲它添加DLL路徑執行環境

回答

6

我認爲這個問題是,你與貨物 配置誤以爲你的項目清單

  • 清單是在項目的根目錄下的文件Cargo.toml。它描述了你的項目本身。
  • 貨物配置描述貨物的特定設置,並允許例如覆蓋依賴關係,或者在您的情況下覆蓋生成腳本。該貨物配置文件hierarchical structure

貨物允許有本地配置特定項目或 全局配置(如GIT)。 Cargo還將此能力擴展到分層戰略。如果,例如,貨物是在 /家庭/富/酒吧/巴茲調用,那麼下面的配置文件將 探查:

/home/foo/bar/baz/.cargo/config 
/home/foo/bar/.cargo/config 
/home/foo/.cargo/config 
/home/.cargo/config 
/.cargo/config 

有了這個結構,你可以指定每個項目的本地配置, 甚至可能將其檢入版本控制。您還可以在主目錄中指定 個人默認配置文件。

所以,如果你移動的相關部分:

[target.x86_64-pc-windows-gnu.CDbax] 
rustc-link-lib = ["CDbax"] 
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"] 
root = "Z:/Somepath//CPP/CDbax/x64/Debug/" 

爲貨物的配置文件的任何正確的位置,它應該工作。