Configuració de proxy per a descàrregues de CMake ExternalProject
Identifiqueu el procés i el pas de descàrrega darrere d'ExternalProject abans de suposar que una configuració correcta de CMake demostra que les descàrregues posteriors de dependències segueixen la mateixa ruta.
CMake es configura correctament. La compilació comença més tard, intenta descarregar una dependència externa i falla al proxy. L'èxit anterior no necessàriament havia exercitat gens aquella descàrrega.
ExternalProject_Add() crea passos que poden executar-se durant la compilació. El procés que els llança pot tenir un entorn diferent del terminal o de l'IDE que va configurar el projecte principal. Aquesta diferència és fàcil de passar per alt a CI, on la configuració i la compilació poden ser tasques separades.
Localitzeu l'operació de xarxa
- Una descàrrega per URL fa servir la ruta de descàrrega de CMake.
- Una font Git invoca un transport Git amb la seva pròpia configuració admesa.
- Un
DOWNLOAD_COMMANDpersonalitzat fa servir el programa que hagi indicat el projecte.
No suposeu que la configuració de proxy d'un programa en configura els tres. Llegiu l'ordre i l'error del pas que ha fallat abans de canviar l'URL de la dependència.
Si el descarregador triat admet variables d'entorn de proxy, proporcioneu-les al procés que executa realment aquell pas. Per a descàrregues públiques el client de les quals accepta un proxy HTTP, la llista de proxys HTTP ofereix candidats d'extrem quan aquesta ruta està permesa. Passar una variable de memòria cau de CMake corrent amb un nom semblant no és automàticament el mateix que definir una variable d'entorn del procés fill.
Manteniu també la distinció respecte de FetchContent: la seva població habitual de dependències passa durant la configuració, així que una recepta que hi funciona no estableix l'entorn d'un pas de compilació d'ExternalProject.
Una resposta antiga que recomanava un descarregador personalitzat per evitar una limitació històrica de redireccions no és prova que cada fallada moderna necessiti una ordre de descàrrega nova. Comproveu si l'error actual és una redirecció, autenticació de proxy, confiança en el certificat o simple accessibilitat. Conserveu el hash esperat de l'arxiu i la validació TLS mentre esmenes la ruta pertinent.