CMake konfiguruje się pomyślnie. Kompilacja zaczyna się później, próbuje pobrać zewnętrzną zależność i zawodzi na proxy. Wcześniejszy sukces wcale nie musiał ćwiczyć tego pobierania.

ExternalProject_Add() tworzy kroki, które mogą działać podczas kompilacji. Proces uruchamiający te kroki może mieć inne środowisko niż terminal lub IDE, które skonfigurowały główny projekt. Tę różnicę łatwo przeoczyć w CI, gdzie konfiguracja i kompilacja mogą być osobnymi zadaniami.

Zlokalizuj operację sieciową

Nie zakładaj, że ustawienie proxy dla jednego programu konfiguruje wszystkie trzy. Przeczytaj polecenie i błąd nieudanego kroku, zanim zmienisz URL zależności.

Jeśli wybrany program pobierający obsługuje zmienne środowiskowe proxy, przekaż je procesowi, który faktycznie wykonuje ten krok. Dla publicznych pobrań, których klient akceptuje proxy HTTP, lista proxy HTTP oferuje kandydatów punktów końcowych, gdy ta droga jest dozwolona. Przekazanie zwykłej zmiennej pamięci podręcznej CMake o podobnej nazwie nie jest automatycznie tym samym co ustawienie zmiennej środowiskowej procesu potomnego.

Zachowaj też odróżnienie od FetchContent: jego zwykłe wypełnianie zależności odbywa się podczas konfiguracji, więc przepis, który tam działa, nie dowodzi środowiska kroku kompilacji ExternalProject.

Stara odpowiedź zalecająca własny program pobierający jako obejście historycznego ograniczenia przekierowań nie jest dowodem, że każdy współczesny błąd wymaga nowego polecenia pobierania. Sprawdź, czy bieżący błąd to przekierowanie, uwierzytelnianie proxy, zaufanie do certyfikatu czy zwykła osiągalność. Zachowaj oczekiwany hash archiwum i walidację TLS, poprawiając właściwą drogę.

Powiązane artykuły