2015-06-07 7 views
5

Есть ли способ связать с библиотекой, которая не находится в текущем пути пакета.Ссылка на библиотеку Windows за пределами папки сборки

Этот link предлагает разместить все под своим каталогом. Наши пакеты устанавливаются в каком-то репозитории в другом месте. Я просто хочу указать 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\.

Update Благодаря ниже ответ, я думал, что это обновление, чтобы дать окончательные результаты того, что работал на моей машине так, как другие считают его полезным.

В 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 ответ создадим a 'config' в .cargo

Если это подкаталог, вам не нужно помещать тег links = в родительский ящик, хотя это DLL; даже с «грузовым пробегом». Я предполагаю, что это добавляет DLL путь к среде выполнения

ответ

6

Я думаю, что проблема в том, что вы спутать с манифеста вашего проекта с груза конфигурации.

  • The манифеста является Cargo.toml файл в корневом каталоге вашего проекта. Он описывает ваш проект.
  • Конфигурация груза описывает конкретные настройки для груза и позволяет, например, переопределять зависимости или в вашем случае переопределять скрипты сборки. Файлы конфигурации грузов имеют hierarchical structure:

Cargo позволяет иметь локальную конфигурацию для конкретного проекта или глобальной конфигурации (например, мерзавец). Cargo также увеличивает эту способность до иерархической стратегии . Если, например, груз был вызван в /дома/Foo/бар/Baz, то следующие файлы конфигурации будет зондировали:

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

С этой структурой можно указать локальную конфигурацию для каждого проекта, и даже, возможно, проверить его на контроль версий. Вы также можете указать личный default с конфигурационным файлом в своем домашнем каталоге.

Так что, если вы переместите соответствующую часть:

[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/" 

в любое нужное место для файла конфигурации груза, он должен работать.

Смежные вопросы