Configurações de proxy para downloads do CMake ExternalProject
Identifique o processo e a etapa de download por trás do ExternalProject antes de presumir que uma configuração bem-sucedida do CMake prova que downloads posteriores de dependências seguem a mesma rota.
O CMake configura com sucesso. A compilação começa mais tarde, tenta baixar uma dependência externa e falha no proxy. O sucesso anterior talvez nem tenha exercitado esse download.
ExternalProject_Add() cria etapas que podem ser executadas durante a compilação. O processo que inicia essas etapas pode ter um ambiente diferente do terminal ou da IDE que configurou o projeto principal. Essa diferença passa fácil despercebida em CI, onde configuração e compilação podem ser tarefas separadas.
Localize a operação de rede
- Um download por URL usa o caminho de download do CMake.
- Uma origem Git invoca um transporte Git com sua própria configuração suportada.
- Um
DOWNLOAD_COMMANDpersonalizado usa o programa que o projeto indicar.
Não presuma que a configuração de proxy de um programa configure os três. Leia o comando e o erro da etapa que falhou antes de alterar a URL da dependência.
Se o downloader escolhido aceitar variáveis de ambiente de proxy, forneça-as ao processo que realmente executa essa etapa. Para downloads públicos cujo cliente aceita um proxy HTTP, a lista de proxies HTTP oferece candidatos de endpoint quando essa rota é permitida. Passar uma variável de cache comum do CMake com nome semelhante não é automaticamente o mesmo que definir uma variável de ambiente do processo filho.
Mantenha também a distinção em relação ao FetchContent: seu preenchimento habitual de dependências ocorre durante a configuração, então uma receita que funciona ali não estabelece o ambiente de uma etapa de compilação do ExternalProject.
Uma resposta antiga que recomenda um downloader personalizado para contornar uma limitação histórica de redirecionamento não é prova de que toda falha moderna precise de um novo comando de download. Verifique se o erro atual é redirecionamento, autenticação de proxy, confiança no certificado ou simples alcançabilidade. Preserve o hash esperado do arquivo e a validação TLS ao corrigir a rota pertinente.