[C++ Avanzado] Familiarizarse con CMake por primera vez

1. Conocimiento previo

CMake es un derivado de Kitware y algunos desarrolladores de código abierto en proceso de desarrollar varios kits de herramientas (VTK), y finalmente formó un sistema y se convirtió en un proyecto de código abierto independiente. El proyecto nació en 2001, y su sitio web oficial es: www.cmake.org, puede obtener más información sobre CMake visitando el sitio web oficial. La popularidad de CMake en realidad se debe al desarrollo de KDE 4. Después de que los desarrolladores de KDE hayan utilizado herramientas automáticas durante casi 10 años, finalmente decidieron elegir una nueva herramienta de construcción de proyectos para KDE 4. La causa fundamental es, en palabras de los desarrolladores de KDE: solo algunos Varios "expertos en compilación" pueden dominar el sistema de compilación actual de KDE (admin/Makefile.common).Después de experimentar la selección y las pruebas de unsermake, scons y CMake, KDE4 decidió usar CMake como su propio sistema de compilación. Durante el proceso de migración, el progreso fue extremadamente fluido y se obtuvo el apoyo de los desarrolladores de CMake. Por lo tanto, la versión de desarrollo actual de KDE4 se ha creado completamente con CMake. Proyectos como kdesvn y rosegarden también han comenzado a utilizar CMake, que está destinado a convertirse en un sistema de construcción convencional.

2. Características

CMake es una herramienta de compilación muy poderosa y flexible que simplifica el proceso de desarrollo multiplataforma.

  • Soporte multiplataforma: CMake es compatible con varios sistemas operativos como Linux, macOS, Windows y otros sistemas similares a UNIX. Esto permite que los proyectos que usan CMake se construyan y ejecuten fácilmente en diferentes plataformas.
  • Admite múltiples sistemas de compilación: CMake puede generar archivos para múltiples sistemas de compilación, como GNU Make, Ninja, Microsoft Visual Studio, etc. Esto proporciona una gran flexibilidad para que los proyectos se ejecuten en diferentes entornos de construcción.
  • Simplifique el proceso de compilación: CMake maneja automáticamente varios detalles específicos del compilador y la plataforma, lo que permite a los desarrolladores concentrarse en escribir código sin preocuparse por los problemas de compatibilidad entre diferentes sistemas operativos, compiladores y herramientas de compilación.
  • Potente gestión de dependencias: CMake puede detectar y gestionar automáticamente las dependencias del proyecto. Usando el comando find_package, CMake puede encontrar y vincular las bibliotecas y los archivos de encabezado requeridos por el proyecto.
  • Modularidad: CMake adopta un diseño modular, lo que permite a los desarrolladores dividir el proyecto en varios subproyectos y componentes. Los archivos CMakeLists.txt en cada subdirectorio pueden configurar reglas de compilación y dependencias individualmente, lo que simplifica la organización del proyecto.
  • Extensibilidad: CMake tiene una buena extensibilidad y puede satisfacer las necesidades de proyectos específicos mediante la personalización de funciones, macros y módulos. Esto hace que CMake se adapte a diferentes tipos de proyectos y flujos de trabajo.
  • Soporte de idiomas: CMake admite múltiples lenguajes de programación, como C, C ++, Objective-C, Fortran, etc. Esto permite que CMake administre y cree fácilmente proyectos escritos en diferentes lenguajes de programación.
  • Soporte de la comunidad: CMake tiene una gran comunidad de usuarios y desarrolladores, lo que proporciona una gran cantidad de recursos y documentación. Esto hace que sea más fácil para los recién llegados comenzar, al mismo tiempo que brinda soporte para solucionar problemas y mejorar la funcionalidad.

3. Problemas existentes

  • Curva de aprendizaje: CMake está escrito utilizando su propio lenguaje de secuencias de comandos personalizado, lo que puede llevar algo de tiempo y esfuerzo para que los principiantes aprendan y comprendan.
  • Limitaciones del lenguaje: en comparación con otros lenguajes de programación, como Python, el lenguaje de secuencias de comandos de CMake tiene funciones limitadas, lo que hace que la implementación de ciertas tareas sea más complicada.
  • Documentación y ejemplos: aunque la documentación de CMake es relativamente completa, puede ser difícil de entender para los principiantes. Además, hay relativamente pocos ejemplos y tutoriales de alta calidad, lo que hace que aprender CMake sea aún más desafiante.
  • Sintaxis detallada: la sintaxis de CMake a veces puede parecer detallada y repetitiva, lo que hace que los archivos CMakeLists.txt se vuelvan grandes y difíciles de mantener.
  • Problemas multiplataforma: aunque CMake se compromete a lograr la compatibilidad multiplataforma, en algunos casos, los desarrolladores aún necesitan escribir código y configuraciones específicas para diferentes plataformas.
  • Gestión de dependencias: la gestión de dependencias de CMake es relativamente débil, especialmente en comparación con los administradores de paquetes modernos como pip de Python o npm de JavaScript. Esto puede generar dependencias difíciles de administrar y mantener en el proyecto.
  • Fragmentación de la comunidad: CMake tiene múltiples versiones y diferentes prácticas, lo que puede generar divisiones e inconsistencias dentro de la comunidad. Esto hace que sea más difícil encontrar soluciones y mejores prácticas.

4. Instalación

4.1 Ventanas

  1. Descargue el instalador de CMake:
    visite el sitio web oficial de CMake (https://cmake.org/download/) y descargue el instalador de CMake (archivo ".msi") para Windows.

  2. Ejecute el instalador: haga
    doble clic en el archivo ".msi" descargado y siga las indicaciones del asistente de instalación. Se recomienda marcar la opción "Agregar CMake a la RUTA del sistema" durante la instalación para usar CMake globalmente en el símbolo del sistema.

Mac 4.2

  1. Uso de Homebrew (recomendado):
    si ya tiene instalado Homebrew (un administrador de paquetes para macOS), simplemente ejecute el siguiente comando en la Terminal para instalar CMake:
    brew install cmake
    
  2. Descargue el instalador de CMake:
    visite el sitio web oficial de CMake (https://cmake.org/download/) y descargue el instalador de CMake (archivo ".dmg") para macOS. Haga doble clic en el archivo ".dmg" y siga las indicaciones del asistente de instalación.

4.3Linux

  1. Usar un administrador de paquetes (recomendado):
    Para la mayoría de las distribuciones de Linux, puede instalar CMake usando el administrador de paquetes que viene con su sistema. Estos son los comandos de instalación para algunas distribuciones comunes de Linux:

    • Ubuntu/Debian:
      sudo apt-get update
      sudo apt-get install cmake
      
    • Fedora:
      sudo dnf install cmake
      
    • CentOS/RHEL:
      sudo yum install cmake
      
    • Arco Linux:
      sudo pacman -S cmake
      
  2. Compile la instalación de la fuente:
    si su distribución de Linux no tiene un paquete CMake precompilado, o si necesita instalar una versión específica de CMake, puede compilar e instalar CMake desde la fuente. Primero, descargue el tarball del código fuente de CMake del sitio web oficial de CMake (https://cmake.org/download/). Luego siga los pasos a continuación:

# 解压下载的源代码压缩包
tar -xzvf cmake-x.y.z.tar.gz
cd cmake-x.y.z

# 编译和安装CMake
./bootstrap
make
sudo make install

En el comando anterior, reemplace "xyz" con el número de versión de CMake descargado real.

Una vez completada la instalación, puede ingresar en la línea de comando cmake --versionpara confirmar si CMake se instaló correctamente y la información de su versión.

5. Primer intento de CMake

Supongamos que tenemos un proyecto C++ simple con un archivo fuente (main.cpp) y un archivo de encabezado (hello.h). El proceso de compilación de CMake es el siguiente:

  1. Primero, crea un CMakeLists.txtarchivo llamado . Este es el archivo de configuración de CMake, que contiene reglas de compilación y dependencias.

  2. Añádele CMakeLists.txtlo siguiente:

    cmake_minimum_required(VERSION 3.10) # 设置CMake的最低版本要求
    project(HelloWorld) # 为项目命名,这里是HelloWorld
    
    set(CMAKE_CXX_STANDARD 11) # 设置C++标准,这里是C++11
    
    add_executable(hello_world main.cpp) # 添加一个可执行文件,名称为hello_world,使用main.cpp作为源文件
    

    explicar:

    • cmake_minimum_requiredEspecifica la versión mínima de CMake necesaria para el proyecto. Esto ayuda a garantizar que los proyectos sean compatibles con versiones anteriores de CMake
    • projectComando para nombrar el proyecto. Aquí el nombre del proyecto esHelloWorld
    • setComando para establecer una variable. Aquí, establecemos CMAKE_CXX_STANDARDvariables para especificar el estándar C++ que utilizará el proyecto, aquí está C++11
    • add_executableEl comando le dice a CMake que cree un ejecutable llamado hello_worldy lo use main.cppcomo archivo fuente.
  3. Abra una Terminal (Linux/macOS) o Símbolo del sistema (Windows) y navegue hasta el directorio raíz del proyecto.

  4. Cree una buildcarpeta llamada . Esta carpeta se utilizará para almacenar los archivos de compilación generados por CMake:

    mkdir build
    cd build
    
  5. Ejecute CMake para generar archivos de compilación. En buildla carpeta, ejecute el siguiente comando:

    cmake ..
    

    Esto le dice a CMake que lea la configuración de compilación de los archivos ..en el directorio principal ( ) CMakeLists.txty buildgenere archivos de compilación en el directorio actual ( ).

  6. Ejecute el comando de compilación para compilar el proyecto. En buildla carpeta, ejecute el siguiente comando:
    Para Linux/macOS:

    make
    

    Para Windows (usando el generador de Visual Studio):

    cmake --build .
    
  7. Una vez compilado con éxito, buildel ejecutable se encontrará en el directorio hello_world(en Windows hello_world.exe). Se puede ejecutar para ver la salida del programa.

Supongo que te gusta

Origin blog.csdn.net/weixin_52665939/article/details/130312205
Recomendado
Clasificación