es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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).

Tags:  , , ,

Answer

  1. Avatar for 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 comando target_compile_features en el archivo CMakeLists.txt para especificar las características requeridas para tu proyecto. Por ejemplo, podrías agregar la siguiente línea a tu archivo CMakeLists.txt:

    target_compile_features(nombre_proyecto PUBLIC cxx_std_17)
    

    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:

    cmake -DCMAKE_CXX_STANDARD=20
    

    Esto establecerá el estándar de C++ en 20 para la compilación actual, pero el comando target_compile_features en tu archivo CMakeLists.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.

Comments are closed.