Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar Makefile para generar archivos CMakeLists de forma inversa?

¿Cómo utilizar Makefile para generar archivos CMakeLists de forma inversa?

CMake es una herramienta de instalación (compilación) multiplataforma que describe el proceso de instalación (compilación) para todas las plataformas en declaraciones simples. Puede generar varios archivos MAKE o archivos de proyecto y probar las funciones de C admitidas por el compilador. Es solo que el archivo de configuración de CMake se llama CmakeLists.txt. Cmake no construye el software final directamente, sino que genera archivos de compilación estándar (como Makefiles para Linux o proyectos/espacios de trabajo para Windows Visual C), que luego se usan en métodos de compilación normales.

El proceso de generar un Makefile en la plataforma Linux y usar CMake para la compilación es el siguiente:

Escribir CmakeLists.txt.

Ejecute el comando "cmake PATH" o "ccmake PATH" para generar el Makefile (PATH es el directorio donde se encuentra CMakeLists.txt).

Compilar usando el comando make

Proyecto de muestra:

Escribir la capa CMakeLists.txt

El programa principal main en el directorio de inicio. cpp

#include "hola.h"

extern Hola hola;

int main()

{

hello.Print Print ();

return 0;

}

CMakeLists.txt en el directorio de inicio

#Al directorio raíz binario del proyecto ${MAIN_BINARY_DIR}.

proyecto (PRINCIPAL)

#soporte de versión

cmake_minimum_required(VERSIÓN 2.8)

# Recurra a "Hola" y "Demostración" "subdirectorios. En realidad, esto

# no hará que se ejecute otro ejecutable de cmake.

#Asegúrese de que el compilador pueda encontrar los archivos incluidos en nuestra biblioteca Hello.

include_directories (${MAIN_SOURCE_DIR}/Hello)

# Garantiza que el vinculador pueda encontrar la biblioteca Hello Demo una vez que se complete la compilación.

link_directories (${HELLO_BINARY_DIR}/Hello)

link_directories (${HELLO_BINARY_DIR}/Demo)

#define las coedes fuente del directorio actual como DIR_SRCS

AUX_SOURCE_DIRECTORY(.DIR_SRCS)

# Agregue un archivo ejecutable llamado "MAIN", que se crea a partir de archivos fuente

add_executable (Main ${DIR_SRCS})

# Vincula el ejecutable a la biblioteca Hello Demo.

target_link_libraries (Demostración principal de saludo)

Defina el nombre del proyecto proyecto (MAIN) para que ${MAIN_SOURCE_DIR} esté disponible para el directorio actual. Como hay 2 subdirectorios, es necesario agregar _subdirectorio. Dado que el programa principal utilizará otras bibliotecas, también debe especificar el directorio donde se encuentra la biblioteca de conexión.

La función del directorio de inicio es usar add_executable para compilar los archivos fuente en el directorio actual en el programa principal y luego vincular las bibliotecas Hello y Demo a través de target_link_libraries. Dado que el archivo del programa principal utiliza el archivo hello.h, se deben incluir los archivos de este directorio.

------------------------------------------- -------------------------------------------------- -- ------

Subdirectorio Demo's subrutina demo.c

#include "hello.h"

Hola hola;

CMakeLists.

#include_directories (${MAIN_SOURCE_DIR}/Hello)

#defina las coedes fuente del directorio actual como DIR_DEMO_SRCS

AUX_SOURCE_DIRECTORY(.DIR_DEMO_SRCS)

p>

# Agregar una biblioteca llamada "Demo" creada a partir de archivos fuente

add_library (Demo ${DIR_DEMO_SRCS})

La función principal del directorio Demo es usar CMakeLists add_library compila el código fuente del directorio actual en una biblioteca de demostración. Debido a que la biblioteca usa el archivo hello.h, include_directories es el directorio.

------------------------------------------- -------------------------------------------------- -- ------

Subdirectorio Hola subrutinas hola .h

#ifndef _hello_h

#define _hello_h

clase Hola

{

público:

void Print()

}; >

Subrutina hola .c para el subdirectorio Hola

#include "hello.h"

#include lt;stdio.hgt;

void Hola: : Print()

{

printf("Hello.World!\n");

}

Hijos de CMakeLists. txt Directorio Hola

#defina los códigos fuente del directorio actual como DIR_HELLO_SRCS

AUX_SOURCE_ DIRECTORY(.DIR_HELLO_SRCS)

# Agregue el archivo fuente llamado "hello "Biblioteca

add_library (Hola ${DIR_HELLO_SRCS})

El propósito principal de CMakeLists en el directorio Hello es usar add_library para compilar el directorio actual en una biblioteca Hello.

------------------------------------------- -------------------------------------------------- -- ------

II. Ejecute el comando cmake

Hasta ahora, hemos completado todos los archivos CMakeLists.txt en el proyecto y los colocamos en el directorio del paso 2 para Comando de ejecución

#cmake.

Se establece de forma predeterminada en el directorio actual y genera un archivo MAKE

#make

Finalmente compila el programa

#cmake. p>

Esta es la primera vez que escribimos un archivo MAKE.