2017-12-22 18 views
0

私は私CMakeLists.txtに次き、IPOを持つC++アプリケーションを構築するためにCMakeの3.10を使用しようとしている:CMakeはIPOサポートをどのようにチェックしますか?

include(CheckIPOSupported) 
check_ipo_supported(RESULT ipo_supported) 
if(ipo_supported) 
    message("-- IPO is supported!") 
    set_property(TARGET target PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) 
else() 
    message(WARNING "IPO is not supported!") 
endif() 

私はIPOで構成されたGCC 7.2は、CentOSの4に(デフォルト)を有効に使用しています私は-fltoフラグを持つ簡単なテストプログラムをコンパイルすることができます。しかしCMakeはIPOはサポートされていないと報告しています。他の複数のマシンでは、同じCMakeスクリプトでIPOがサポートされています。

私はCMakeがIPOサポートをチェックする方法を知っていれば、それが何であるかを理解するのに役立ちます。 CMakeのモジュールCheckIPOSupportedはどのように機能しますか?

+0

モジュールのドキュメントによると、追加のオプション 'OUTPUT 'をマクロに渡し、それが失敗する理由を確認することができます。 (あるいは、RESULTオプションを削除して、失敗理由をCMakeが出力するようにすることもできます)。 – Tsyvarev

答えて

1

は、あなたのCheckIPOコールにOUTPUT outputを追加します。

check_ipo_supported(RESULT ipo_supported OUTPUT output) 

あなたはそれがサポートされていない理由を取得するためにoutputをプリントアウトすることができます。

通常、テストに失敗すると、CMakeビルドディレクトリ内のファイルCMakeFiles/CMakeError.logにトレースが残されます。テストが失敗した理由を詳しく知るには、その項目をチェックしてください。

最終的に、あなたの実際の質問に答えるには、CheckIPOSupportedがどのように働くのですか?コードを読んでください!あなたはそれをオンラインで見つけることができますhttps://gitlab.kitware.com/cmake/cmake/blob/master/Modules/CheckIPOSupported.cmake
詳細をすべて理解するのが難しい場合は、ローカルコピーに出力文を追加することもできます。

関連する問題