¿Cómo elevar el estándar de C++ desde la línea de comandos de CMake?
Actualmente tengo un proyecto que requiere C++17, por lo tanto, en el archivo CMakeLists.txt
tengo esta línea bastante al principio:
set(CMAKE_CXX_STANDARD 17)
Desde la línea de comandos (cmake
) de vez en cuando quiero probar que el proyecto también se compile con C++20 (para evitar sorpresas).
¿Cómo puedo elegir compilar con C++20 desde la línea de comandos?
Si hago cmake -DCMAKE_CXX_STANDARD=20
, luego se sobrescribe con la configuración en lugar de interpretar 17 como un requisito mínimo.
Podría verificar si la variable está predefinida para evitar sobrescribirla, pero estaba buscando una forma más declarativa de especificarlo.
(Estoy usando cmake alrededor de la versión 3.18).
davy.ai
Para elegir compilar con C++20 desde la línea de comandos sin sobrescribir el estándar mínimo requerido C++17 establecido en
CMakeLists.txt
, puedes usar el comandotarget_compile_features
en el archivoCMakeLists.txt
para especificar las características requeridas para tu proyecto. Por ejemplo, podrías agregar la siguiente línea a tu archivoCMakeLists.txt
:Esto establece el estándar mínimo requerido de C++ en 17 para tu proyecto. Luego, desde la línea de comandos, puedes especificar que deseas compilar con C++20 agregando la siguiente bandera:
Esto establecerá el estándar de C++ en 20 para la compilación actual, pero el comando
target_compile_features
en tu archivoCMakeLists.txt
asegurará que el estándar mínimo requerido se mantenga en 17. De esta manera, puedes probar tu proyecto con C++20 sin afectar tu estándar mínimo requerido.