Ошибка компиляции ржавчины на macOS, связанная с GMP - PullRequest
0 голосов
/ 21 января 2019

Что-то вроде

use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;

...

fn a() -> Option<MyMPZ>;

Он (наряду со многими другими файлами Rust, библиотеками и другими зависимостями) компилируется и работает нормально на Ubuntu и даже Windows, но на macOS Mojave Я получаю

ожидаемая структура `gmp :: mpz :: Mpz`, найдено enum` std :: option :: Option`

примечание: ожидаемый тип `& gmp :: mpz :: Mpz`
найден тип `& std :: option :: Option`

Я установил GMP с Brew, но я попытался с GMP 6.1.2, созданной мной, с теми же результатами.

Обновление 1: Кажется, MCVE не имеет особого смысла, так как у меня есть две точные копии проекта в одном корне, такие как root \ example1 и root \ example2. Одна копия строится нормально, другая выдает сообщение об ошибке. Попробовал очистить груз и т. Д. Несколько раз с тем же эффектом.

Обновление 2: Кажется, это определенно какая-то проблема с кэшированием. Потому что, когда я строю зависимости, они берут 32-битную версию gmp.lib, созданную по заказу, из C:\Users\<userName>\.rustup\toolchains\nightly-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib. Поэтому, если я проверяю зависимость и строю ее отдельно - тесты запускаются там. Если я собираю весь проект и использую свои собственные ящики с зависимостями сборки как .lib, я в какой-то момент получаю

ожидается структура `gmp :: mpz :: Mpz`, найдена другая структура` gmp :: mpz :: Mpz`

для меня это похоже на смешивание 32/64 битных библиотек GMP.

1 Ответ

0 голосов
/ 12 февраля 2019

Хорошо, так что это был ад зависимости от груза :) - после нескольких неудачных переустановок, очистки и т. Д. Я, наконец, смог восстановить, вручную загрузив и восстановив и повторно сославшись на локальные пути зависимостей, на которые ссылался git. С тех пор - все строилось нормально, независимо от того, ссылался я на месте, через git или ящики.

...