Szukaj…


Składnia

  • target_compile_features ( target PRYWATNY | PUBLICZNY | INTERFEJS funkcja1 [ funkcja2 ...])

Kompiluj wymagania funkcji

Wymagane funkcje kompilatora można określić w celu za pomocą polecenia target_compile_features :

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

Funkcje muszą być częścią CMAKE_C_COMPILE_FEATURES lub CMAKE_CXX_COMPILE_FEATURES ; W przeciwnym razie cmake zgłasza błąd. Cmake doda wszelkie niezbędne flagi, takie jak -std=gnu++11 do opcji kompilacji celu.

W tym przykładzie funkcje są zadeklarowane jako PRIVATE : wymagania zostaną dodane do celu, ale nie do jego konsumentów. Aby automatycznie dodać wymagania do budynku docelowego przeciwko foo, zamiast PRIVATE należy użyć PUBLIC lub 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
)

Wybór wersji C / C ++

Poszukiwaną wersję dla C i C ++ można określić globalnie, używając odpowiednio zmiennych CMAKE_C_STANDARD (akceptowane wartości to 98, 99 i 11) i CMAKE_CXX_STANDARD (akceptowane wartości to 98, 11 i 14):

set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)

-std=c++11 one potrzebne opcje kompilacji na -std=c++11 docelowych (np. -std=c++11 dla gcc).

Wersja mogą być wykonane wymóg przez ustawienie na ON zmiennych CMAKE_C_STANDARD_REQUIRED i CMAKE_CXX_STANDARD_REQUIRED odpowiednio.

Zmienne należy ustawić przed utworzeniem celu. Wersję można również określić dla poszczególnych celów:

set_target_properties(foo PROPERTIES
    CXX_STANDARD 11
    CXX_STANDARD_REQUIRED ON
)


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow