Ustawienia proxy dla pobierania CMake ExternalProject
Zidentyfikuj proces i krok pobierania stojący za ExternalProject, zanim uznasz, że udana konfiguracja CMake dowodzi, iż późniejsze pobieranie zależności idzie tą samą drogą.
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ą
- Pobieranie przez URL używa ścieżki pobierania CMake.
- Źródło Git wywołuje transport Git z własną obsługiwaną konfiguracją.
- Niestandardowe
DOWNLOAD_COMMANDużywa dowolnego programu wskazanego przez projekt.
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ę.