CMAKEを使用するコンパイラでc ++ 11機能が有効になっているかどうかを確認します

イェペセン

私はCMakeでプロジェクトを開発しています。私のコードにはconstexpr、Visual Studio 2015では許可されているが、Visual Studio2013では許可されていないメソッドが含まれています。

CMakeLists.txt指定されたコンパイラで機能がサポートされているかどうかを確認するにはどうすればよいですか?CMakeのドキュメントを見CMAKE_CXX_KNOWN_FEATURESたことがありますが、使い方がわかりませんでした。

rgmt

target_compile_features使用して、C ++ 11(/ 14/17)機能を要求できます

target_compile_features(target PRIVATE|PUBLIC|INTERFACE feature1 [feature2 ...])

feature1記載されている機能ですCMAKE_CXX_KNOWN_FEATURESたとえばconstexpr、パブリックAPIで使用する場合は、次を使用できます。

add_library(foo ...)
target_compile_features(foo PUBLIC cxx_constexpr)

また、オプションとして機能を検出できるWriteCompilerDetectionHeaderモジュールを確認し、コンパイラがそれらをサポートしていない場合は、一部の機能の下位互換性の実装を提供する必要があります。

write_compiler_detection_header(
    FILE foo_compiler_detection.h
    PREFIX FOO
    COMPILERS GNU MSVC
    FEATURES cxx_constexpr cxx_nullptr
)

ここで、キーワードが使用可能な場合に定義されたファイルfoo_compiler_detection.hが生成FOO_COMPILER_CXX_CONSTEXPRされconstexprます。

#include "foo_compiler_detection.h"

#if FOO_COMPILER_CXX_CONSTEXPR

// implementation with constexpr available
constexpr int bar = 0;

#else

// implementation with constexpr not available
const int bar = 0;

#endif

さらに、FOO_CONSTEXPR定義さconstexprれ、現在のコンパイラに機能が存在する場合に拡張されます。それ以外の場合は空になります。

FOO_NULLPTRが定義さnullptrれ、現在のコンパイラに機能が存在する場合に展開されます。それ以外の場合は、互換性の実装に拡張されます(例NULL)。

#include "foo_compiler_detection.h"

FOO_CONSTEXPR int bar = 0;

void baz(int* p = FOO_NULLPTR);

CMakeのドキュメントを参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルURLへのアクセスを許可するが有効になっているかどうかを確認します(Chrome拡張機能)

分類Dev

Ansibleパイプラインが有効/機能しているかどうかを確認します

分類Dev

実行時に競合検出機能が有効になっているかどうかを確認するにはどうすればよいですか?

分類Dev

特定のiptables拡張機能が利用可能で有効になっているかどうかを確認するにはどうすればよいですか?

分類Dev

Javaコードを使用してクライアントブラウザでJavaScriptが有効になっているかどうかを確認する方法

分類Dev

Androidで自動同期が有効になっているかどうかを確認します

分類Dev

iPhoneアプリでプッシュが有効になっているかどうかを確認します

分類Dev

iOS7でプッシュ通知が有効になっているかどうかを確認します

分類Dev

PythonでPIEが有効になっているかどうかを確認します

分類Dev

ウィジェットが有効になっているかどうかを確認します

分類Dev

Xamarin iOS:通知音が有効になっているかどうかを確認します

分類Dev

ABAPHTTP宛先=> SSLが有効になっているかどうかを確認します

分類Dev

遅延読み込みが有効になっているかどうかを確認します

分類Dev

自動リピートが有効になっているかどうかを確認します

分類Dev

Cookieが有効になっているかどうかを確認する

分類Dev

要素が有効になっているかどうかを確認する方法

分類Dev

ngIfが有効になっているかどうかを確認する方法

分類Dev

Chromeプラグインでボタンが有効になっているかどうかを確認する

分類Dev

セレンを使用して要素が無効になっているかどうかを確認します

分類Dev

kubectlを使用して、RBACが有効になっているかどうかを確認する方法

分類Dev

パッケージを使用してアプリが有効または無効になっているかどうかを確認します

分類Dev

ハイパースレッディングが有効になっているかどうかを確認していますか?

分類Dev

androidx生体認証プロンプトでデバイスの生体認証が有効になっているかどうかを確認します

分類Dev

CosmosDBコレクションでTTLが有効になっているかどうかをプログラムで確認します

分類Dev

WebGL2がサポートされ、クライアントのブラウザで有効になっているかどうかを確認します

分類Dev

デバイスで In App Purchasing が無効になっているかどうかを確認します

分類Dev

パッケージで有効になっている機能を確認する方法はありますか?

分類Dev

phpsoapとxmlrpc拡張機能が有効になっているかどうかを確認してください

分類Dev

Ubuntu Linux 12.04 LTSで有効/無効になっているPHP拡張機能を確認するにはどうすればよいですか?

Related 関連記事

  1. 1

    ファイルURLへのアクセスを許可するが有効になっているかどうかを確認します(Chrome拡張機能)

  2. 2

    Ansibleパイプラインが有効/機能しているかどうかを確認します

  3. 3

    実行時に競合検出機能が有効になっているかどうかを確認するにはどうすればよいですか?

  4. 4

    特定のiptables拡張機能が利用可能で有効になっているかどうかを確認するにはどうすればよいですか?

  5. 5

    Javaコードを使用してクライアントブラウザでJavaScriptが有効になっているかどうかを確認する方法

  6. 6

    Androidで自動同期が有効になっているかどうかを確認します

  7. 7

    iPhoneアプリでプッシュが有効になっているかどうかを確認します

  8. 8

    iOS7でプッシュ通知が有効になっているかどうかを確認します

  9. 9

    PythonでPIEが有効になっているかどうかを確認します

  10. 10

    ウィジェットが有効になっているかどうかを確認します

  11. 11

    Xamarin iOS:通知音が有効になっているかどうかを確認します

  12. 12

    ABAPHTTP宛先=> SSLが有効になっているかどうかを確認します

  13. 13

    遅延読み込みが有効になっているかどうかを確認します

  14. 14

    自動リピートが有効になっているかどうかを確認します

  15. 15

    Cookieが有効になっているかどうかを確認する

  16. 16

    要素が有効になっているかどうかを確認する方法

  17. 17

    ngIfが有効になっているかどうかを確認する方法

  18. 18

    Chromeプラグインでボタンが有効になっているかどうかを確認する

  19. 19

    セレンを使用して要素が無効になっているかどうかを確認します

  20. 20

    kubectlを使用して、RBACが有効になっているかどうかを確認する方法

  21. 21

    パッケージを使用してアプリが有効または無効になっているかどうかを確認します

  22. 22

    ハイパースレッディングが有効になっているかどうかを確認していますか?

  23. 23

    androidx生体認証プロンプトでデバイスの生体認証が有効になっているかどうかを確認します

  24. 24

    CosmosDBコレクションでTTLが有効になっているかどうかをプログラムで確認します

  25. 25

    WebGL2がサポートされ、クライアントのブラウザで有効になっているかどうかを確認します

  26. 26

    デバイスで In App Purchasing が無効になっているかどうかを確認します

  27. 27

    パッケージで有効になっている機能を確認する方法はありますか?

  28. 28

    phpsoapとxmlrpc拡張機能が有効になっているかどうかを確認してください

  29. 29

    Ubuntu Linux 12.04 LTSで有効/無効になっているPHP拡張機能を確認するにはどうすればよいですか?

ホットタグ

アーカイブ