cmake
Funciones de compilación y selección estándar C / C ++.
Buscar..
Sintaxis
- target_compile_features (objetivo PRIVADO | PÚBLICA | INTERFACE feature1 [característica2 ...])
Requisitos de la característica de compilación
Las características requeridas del compilador se pueden especificar en un destino usando el comando target_compile_features :
add_library(foo
foo.cpp
)
target_compile_features(foo
PRIVATE # scope of the feature
cxx_constexpr # list of features
)
Las características deben ser parte de CMAKE_C_COMPILE_FEATURES o CMAKE_CXX_COMPILE_FEATURES ; cmake informa un error de lo contrario. Cmake agregará los indicadores necesarios, como -std=gnu++11
a las opciones de compilación del destino.
En el ejemplo, las características se declaran PRIVATE
: los requisitos se agregarán al objetivo, pero no a sus consumidores. Para agregar automáticamente los requisitos a un edificio de destino contra foo, se debe utilizar PUBLIC
o INTERFACE
lugar de PRIVATE
:
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
)
Selección de versión C / C ++
La versión deseada para C y C ++ se puede especificar globalmente utilizando las variables CMAKE_C_STANDARD
respectivamente (los valores aceptados son 98, 99 y 11) y CMAKE_CXX_STANDARD
(los valores aceptados son 98, 11 y 14):
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
Estos agregarán las opciones de compilación necesarias en los objetivos (por ejemplo, -std=c++11
para gcc).
La versión puede ser un requisito mediante el establecimiento de ON
las variables CMAKE_C_STANDARD_REQUIRED
y CMAKE_CXX_STANDARD_REQUIRED
respectivamente.
Las variables deben establecerse antes de la creación del objetivo. La versión también se puede especificar por objetivo:
set_target_properties(foo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)