サーチ…


構文

  • target_compile_features( ターゲット PRIVATE | PUBLIC | INTERFACE フィーチャ1 [ フィーチャ2 ...])

機能要件のコンパイル

必要なコンパイラ機能は、 target_compile_featuresコマンドを使用してターゲット上で指定できます。

add_library(foo
    foo.cpp
)
target_compile_features(foo
    PRIVATE          # scope of the feature
    cxx_constexpr    # list of features
)

機能はCMAKE_C_COMPILE_FEATURESまたはCMAKE_CXX_COMPILE_FEATURESの一部でなければなりません。それ以外の場合、cmakeはエラーを報告します。 Cmakeは、 -std=gnu++11などの必要なフラグをターゲットのコンパイルオプションに追加します。

この例では、機能がPRIVATEと宣言されています。要件はターゲットに追加されますが、コンシューマには追加されません。 fooに対してターゲットビルディングに要件を自動的に追加するには、 PRIVATE代わりにPUBLICまたはINTERFACEを使用する必要があります。

target_compile_features(foo
    PUBLIC    # this time, required as public
    cxx_constexpr
)

add_executable(bar
    main.cpp
)
target_link_libraries(bar
    foo       # foo's public requirements and compile flags are added to bar
)

C / C ++のバージョン選択

CMAKE_C_STANDARD (受け入れられる値はCMAKE_CXX_STANDARD )とCMAKE_CXX_STANDARD (受け入れられる値はCMAKE_CXX_STANDARD )を使用して、CおよびC ++の募集バージョンをグローバルに指定することができます。

set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)

これらは、ターゲットに必要なコンパイルオプションを追加します(例:gcc -std=c++11 )。

バージョンは、変数CMAKE_C_STANDARD_REQUIREDおよびCMAKE_CXX_STANDARD_REQUIREDそれぞれON設定することによって、要件を満たすことができます。

ターゲット作成前に変数を設定する必要があります。バージョンは、ターゲットごとに指定することもできます。

set_target_properties(foo PROPERTIES
    CXX_STANDARD 11
    CXX_STANDARD_REQUIRED ON
)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow