Descripción del primer proyecto hello world creado por CMake Tool

1. Objeto del proyecto

Aquí creamos automáticamente un proyecto CMake para nosotros a través de la herramienta CMake de vscode.

Para obtener detalles sobre cómo hacer esto, consulte mi otra publicación de blog:
vscode usa el complemento CMake Tool para compilar el primer proyecto CMake helloworld

Una vez completada la creación, se generan un main.cpp, un CMakeLists.txt y un directorio de compilación.

Abra CMakeLists.txt, puede ver el siguiente contenido:

cmake_minimum_required(VERSION 3.0.0)
project(hello VERSION 0.1.0)

include(CTest)
enable_testing()

add_executable(hello main.cpp)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

Por el momento, nos centraremos en las siguientes líneas, que son el contenido principal, y no importa si otro contenido puede incluso eliminarse temporalmente:

// 指定cmake使用的最低版本号
cmake_minimum_required(VERSION 3.0.0)

// 设定工程的名字为hello, 版本号为0.1.0
project(hello VERSION 0.1.0)

// 生成名为hello的可执行文件,相关的源文件是main.cpp
add_executable(hello main.cpp)

Dos, descripción de la sintaxis CMakeLists.txt

A través de este ejemplo, puede tener una comprensión general de CMake. Aquí hay algunas explicaciones simples para ello.

Echemos un vistazo a CMakeLists.txt nuevamente. Este archivo es el archivo de definición de compilación de cmake. El nombre del archivo distingue entre mayúsculas y minúsculas. Si hay varios directorios en el proyecto, debe asegurarse de que haya un CMakeLists.txt para cada uno. directorio a administrar. (En cuanto a la construcción de directorios múltiples, lo mencionaremos más adelante, por lo que no explicaré demasiado aquí).

  • La sintaxis de la directiva PROYECTO es:
PROJECT(projectname [CXX] [C] [Java])

Puede usar este comando para definir el nombre del proyecto y especificar los idiomas admitidos por el proyecto. La lista de idiomas admitidos se puede ignorar y el valor predeterminado es admitir todos los idiomas. Esta instrucción define implícitamente dos variables cmake: <nombre del proyecto>_BINARY_DIR y <nombre del proyecto>_SOURCE_DIR, aquí están HELLO_BINARY_DIR y HELLO_SOURCE_DIR.

Al mismo tiempo, el sistema cmake también nos ayuda a predefinir las variables PROJECT_BINARY_DIR y PROJECT_SOURCE_DIR, y sus valores son consistentes con HELLO_BINARY_DIR y HELLO_SOURCE_DIR respectivamente. En aras de la uniformidad, se recomienda utilizar PROJECT_BINARY_DIR y PROJECT_SOURCE_DIR directamente en el futuro, incluso si se modifica el nombre del proyecto, estas dos variables no se verán afectadas. Si se usa <projectname>_SOURCE_DIR, después de modificar el nombre del proyecto, estas variables también deben modificarse al mismo tiempo, lo cual es un inconveniente.

  • La sintaxis del comando SET es:
SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])

En esta etapa, todo lo que necesita saber es que el comando SET se puede usar para definir variables explícitamente. Por ejemplo, usamos SET(SRC_LIST main.c), si hay varios archivos fuente, también se puede definir como:

SET(SRC_LIST main.c t1.c t2.c)。
  • ADD_EXECUTABLE
ADD_EXECUTABLE(hello ${SRC_LIST})

Después de definir este proyecto, se generará un archivo ejecutable llamado hello. Los archivos de origen relacionados son la
lista de archivos de origen definida en SRC_LIST. En este ejemplo, también puede escribir directamente ADD_EXECUTABLE(hello main.cpp).

Lo que debe explicarse aquí es que hola como el nombre del proyecto no tiene nada que ver con el archivo ejecutable generado hola, puede escribirlo como

ADD_EXECUTABLE(my_exe main.cpp)

Las reglas de sintaxis más simples son:

  1. Las variables usan ${} para tomar valores, pero el nombre de la variable se usa directamente en la declaración de control IF
  2. Los parámetros de las instrucciones (parámetro 1, parámetro 2...)
    se encierran entre corchetes y se separan por espacios o punto y coma.
    Tome la instrucción ADD_EXECUTABLE anterior como ejemplo, si hay otro archivo fuente func.c, debe escribirse como:
    ADD_EXECUTABLE(hello main.c func.c) o
    ADD_EXECUTABLE(hello main.c;func.c)
  3. Las directivas no distinguen entre mayúsculas y minúsculas, los parámetros y las variables distinguen entre mayúsculas y minúsculas.

Limpieza del proyecto:

make clean

3. Explicación sobre construcción interna y construcción externa

Hay otro recordatorio muy importante, es decir: en el ejemplo anterior, realizamos una compilación interna (compilación en la fuente) y cmake recomienda encarecidamente una compilación externa (compilación fuera de la fuente).

Sobre la construcción interna y la construcción externa, se presentará en detalle en otra publicación de blog.

Supongo que te gusta

Origin blog.csdn.net/hubing_hust/article/details/128490091
Recomendado
Clasificación