Intel コンパイラ icc (または icpc) を CMake ベースのプロジェクトで使用したいと考えています (Linux 上での価値があります)。もちろん、cmakeを呼び出すときにCXX変数をエクスポートできます。
CXX=icpc cmake ../
これはうまくいきます。ただし、カスタムオプションを介してこの選択を利用できるようにしたいと思います。このために、カスタムオプションを解析します。
cmake -DMY_COMPILER_OPTION=Intel ..
なので
IF (MY_COMPILER_OPTION STREQUAL "Intel")
MESSAGE(STATUS "** Compiling with Intel settings **")
SET(CMAKE_CXX_COMPILER "icpc")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -w")
SET(CMAKE_CXX_FLAGS_DEBUG "-g")
ENDIF ()
CMAKE_CXX_COMPILER
いくつかのコンパイラフラグと一緒に設定します。これも機能しますが、重要な「しかし」があります。
また、icc でコンパイルするときにコードにオプション-ipo
(手続き間の最適化) を使用したいと思います。また、ビルド プロセス内で静的ライブラリをコンパイルする必要があります。これが機能するには、Intel のものを使用する必要がありますxiar
(また、xilink
私も推測します)。
cmake は実際にこのための特別なプロパティを提供しています
set_property(TARGET mytarget PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)
ただし、これは、コンパイラが環境変数を介して設定されている場合にのみ適切に機能するようです (その後、xiar が使用されます)。このプロパティを介してコンパイラを設定すると、CMAKE_CXX_COMPILER
無視されます。
これを行う別の方法はありますか?おすすめの方法は?または、少なくとも回避策ですか?