¿Cómo utilizar Makefile para generar archivos CMakeLists de forma inversa?
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()
{ p>
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>
{
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.