Setări de proxy pentru descărcările CMake ExternalProject
Identificați procesul și pasul de descărcare din spatele ExternalProject înainte de a presupune că o configurare CMake reușită dovedește că descărcările ulterioare de dependențe urmează aceeași rută.
CMake se configurează cu succes. Compilarea începe mai târziu, încearcă să descarce o dependență externă și eșuează la proxy. Succesul anterior nu exersase neapărat deloc acea descărcare.
ExternalProject_Add() creează pași care pot rula în timpul compilării. Procesul care lansează acești pași poate avea un mediu diferit de terminalul sau IDE-ul care a configurat proiectul principal. Această diferență este ușor de ratat în CI, unde configurarea și compilarea pot fi joburi separate.
Localizați operația de rețea
- O descărcare prin URL folosește calea de descărcare a CMake.
- O sursă Git invocă un transport Git cu propria configurație acceptată.
- Un
DOWNLOAD_COMMANDpersonalizat folosește programul indicat de proiect.
Nu presupuneți că setarea de proxy pentru un program le configurează pe toate trei. Citiți comanda și eroarea pasului eșuat înainte de a schimba URL-ul dependenței.
Dacă descărcătorul ales acceptă variabile de mediu pentru proxy, furnizați-le procesului care execută efectiv acel pas. Pentru descărcări publice al căror client acceptă un proxy HTTP, lista de proxy HTTP oferă candidați de endpoint când acea rută este permisă. Transmiterea unei variabile de cache CMake obișnuite cu nume similar nu este automat același lucru cu setarea unei variabile de mediu a procesului copil.
Păstrați și distincția față de FetchContent: popularea obișnuită a dependențelor are loc în timpul configurării, deci o rețetă care funcționează acolo nu stabilește mediul unui pas de compilare ExternalProject.
Un răspuns vechi care recomandă un descărcător personalizat pentru a ocoli o limitare istorică de redirecționare nu este dovada că fiecare eșec modern are nevoie de o comandă de descărcare nouă. Verificați dacă eroarea actuală este o redirecționare, autentificare de proxy, încredere în certificat sau simplă accesibilitate. Păstrați hash-ul așteptat al arhivei și validarea TLS în timp ce corectați ruta relevantă.