複数のコンパイラに対する CMake の限定的なサポート
CMake は、すべての C ソース ファイル (CMAKE_CXX_COMPILER) に対して単一のユニバーサル コンパイラを使用するという厳格なポリシーを採用しています。この固有の制限により、同じプロジェクト内でホストとクロスコンパイルを混在させる場合に課題が生じます。
ターゲットごとにオーバーライドできない
現在、CMake には CMAKE_CXX_COMPILER をオーバーライドするためのインフラストラクチャがありません。ターゲットごとに設定します。この制限により、さまざまなアーキテクチャのコンパイラの同時管理が複雑になります。
解決策:
1.複数の CMake 呼び出し:
CMake の制限を認識した上で、最も簡単な解決策は、それぞれに異なるコンパイラを割り当てて CMake を複数回実行することです。このアプローチは、同じコンパイラ ツールチェーンから 32 ビットと 64 ビットのバイナリをコンパイルするようなシナリオでも実用的です。
2.カスタム コマンド (非推奨):
あまり洗練されていない代替方法は、カスタム コマンドに頼ることです。この回避策には、CMake の組み込みコンパイラ処理メカニズムを回避する美化されたシェル スクリプトの作成が含まれます。ただし、このアプローチは、モジュール性と移植性を維持するという CMake の目的から逸脱します。
3.個別の CMakeLists.txt ファイル:
最も推奨される解決策は、アーキテクチャまたはコンパイラごとに個別の CMakeLists.txt ファイルを作成することです。複数のビルド手順による不便さにもかかわらず、このアプローチにより明確な分離が保証され、各コンポーネントの独立したコンパイルが容易になります。共通のコードを個別の include() ファイルに保持すると、コードの再利用が強化され、冗長性が削減されます。
以上が## CMake で複数のコンパイラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。