ユーザーが cmake 構成ツール (ccmake や cmake-gui など) を実行して、使用するコンパイラを変更できるようにしたいと考えています。これは、クラスター上で実行されることもある (したがって、適切な MPI 構造を持つクラスター固有のコンパイラーが必要になる) クロスプラットフォーム プログラムを構築しているが、非 MPI モードで実行されることもあるために必要です。
コンパイラは通常、プラットフォームが期待するもの (通常は gcc/g++ または最悪の場合は MSVC) であるが、MPI を使用している場合は、mpicc/mpicxx を介してコンパイルする必要があることが常にわかっていると仮定します。
次のコードが機能するはずだと思います。
cmake_minimum_required(VERSION 2.4)
option(USE_MPI "Is this on an MPI system?" OFF)
if (USE_MPI)
message(STATUS "Setting compiler to MPIC")
set(CMAKE_CXX_COMPILER mpicxx)
set(CMAKE_C_COMPILER mpicc)
endif(USE_MPI)
project(test_project)
add_executable(testprogram test.cpp)
上記は単純化された例ですが、私がやろうとしていることを示していると思います。
これは、mpicxx と mpicc がパス上にあることを前提としていますが、それは実際の問題ではありません。ccmake または cmake-gui を実行すると、デフォルトのオプション パス 'off' が評価されてステップ ダウンされ、プロジェクト行にヒットし、標準のネイティブ コンパイラに適したパスと選択肢がキャッシュに書き込まれるため、問題が発生します。 (通常は gcc)。GUI でオプションを変更できますが、手遅れです。再度構成/生成してもキャッシュは更新されません。ユーザーがオプションをオンにしても、コンパイラは設定されたままです。
私がやりたいと思われるのは、project() 行で発生するコンパイラ検索ルーチンを再実行することです。
これを行うより良い方法はありますか?コンパイラの設定方法を誤解していますか?