CMake は正常に設定されます。ビルドは後から始まり、外部依存関係をダウンロードしようとしてプロキシで失敗します。以前の成功は、そのダウンロードをまったく実行していなかった可能性があります。

ExternalProject_Add() はビルド中に実行できるステップを作成します。そのステップを起動するプロセスは、メインプロジェクトを設定したターミナルや IDE とは異なる環境を持つことがあります。CI では設定とコンパイルが別ジョブになることがあり、この違いは見落とされがちです。

ネットワーク操作を特定する

  • URL ダウンロードは CMake のダウンロード経路を使います。
  • Git ソースは独自の対応設定を持つ Git トランスポートを呼び出します。
  • カスタムの DOWNLOAD_COMMAND はプロジェクトが指定した任意のプログラムを使います。

1 つのプログラムのプロキシ設定が 3 つすべてを設定するとは考えないでください。依存関係の URL を変える前に、失敗したステップのコマンドとエラーを読んでください。

選択したダウンローダーがプロキシ環境変数をサポートするなら、そのステップを実際に実行するプロセスに渡してください。クライアントが HTTP プロキシを受け入れる公開ダウンロードでは、その経路が許可されている場合に HTTP プロキシ一覧がエンドポイント候補を提供します。似た名前の通常の CMake キャッシュ変数を渡すことは、子プロセスの環境変数を設定することと同じではありません。

FetchContent との違いも保ってください。通常の依存関係の取得は設定時に行われるため、そこで動くレシピは ExternalProject ビルドステップの環境を証明しません。

歴史的なリダイレクト制限を回避するためにカスタムダウンローダーを勧める古い回答は、現代のあらゆる失敗に新しいダウンロードコマンドが必要だという証拠ではありません。現在のエラーがリダイレクト、プロキシ認証、証明書信頼、単なる到達不能のどれかを確認してください。該当する経路を直す際には、期待されるアーカイブハッシュと TLS 検証を保ってください。

関連記事