cmake
Funkcje kompilacji i standardowy wybór C / C ++
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
)