El programa make que forma parte de MSYS nos permite escribir scripts de construcción que automatizarán el proceso de compilación. El siguiente es un ejemplo simplificado:
Arriba del archivo se declara e inicializa el macro "FILES", el cual especifica que archivos serán compilados. Después, se inicializa el macro "APP" que especifica el nombre del ejecutable.
Después de inicializar estos 2 macros, se presenta un target all, el cual compila el programa. Continuado por las dependencias, que están definidas como el macro de la lista de archivos, ya que obviamente vamos a requerir el código fuente para poder compilar el programa.
Después de especificar el target y sus dependencia, el comando para crear el target se encuentra en la siguiente línea, luego de un carácter de tabulación. Este carácter es necesario, de no estar, make lo ignorará.
Como es de esperarse, el comando para compilar el programa es muy parecido a lo que usaríamos directamente en la línea de comandos. Una diferencia en particular es que ahora tenemos macros que usaremos en el comando, para hacer tareas como agregar archivos nuevos al proyecto mucho más fácil. Ya que solo tiene que cambiarse la definición del macro en lugar de cambiar el comando completo.
En los siguientes posts vamos a ir agregando más librerías, por lo que el uso de Makefiles va ser imprescindible. Ahora veamos un Makefile un poco más completo:
Para usarlo, creamos un archivo en el mismo directorio donde tengamos nuestro código fuente, copiamos el código anterior y lo guardamos como Makefile (con mayúscula M, sin extensión). Ahora solo queda lanzar su línea de comando con acceso a make.exe, y ejecutarlo para compilar nuestro proyecto de ejemplo.
1 2 3 4 5 6 7 8 9 | # FILES especifica que archivos se compilarán como parte del proyecto FILES = main.cpp # APP especifica el nombre del ejecutable APP = main # Este es el target que compilará nuestro ejecutable all: $(FILES) g++ $(FILES) -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o $(APP) |
Arriba del archivo se declara e inicializa el macro "FILES", el cual especifica que archivos serán compilados. Después, se inicializa el macro "APP" que especifica el nombre del ejecutable.
Después de inicializar estos 2 macros, se presenta un target all, el cual compila el programa. Continuado por las dependencias, que están definidas como el macro de la lista de archivos, ya que obviamente vamos a requerir el código fuente para poder compilar el programa.
Después de especificar el target y sus dependencia, el comando para crear el target se encuentra en la siguiente línea, luego de un carácter de tabulación. Este carácter es necesario, de no estar, make lo ignorará.
Como es de esperarse, el comando para compilar el programa es muy parecido a lo que usaríamos directamente en la línea de comandos. Una diferencia en particular es que ahora tenemos macros que usaremos en el comando, para hacer tareas como agregar archivos nuevos al proyecto mucho más fácil. Ya que solo tiene que cambiarse la definición del macro en lugar de cambiar el comando completo.
En los siguientes posts vamos a ir agregando más librerías, por lo que el uso de Makefiles va ser imprescindible. Ahora veamos un Makefile un poco más completo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # FILES especifica que archivos se compilarán como parte del proyecto FILES = main.cpp # CC especifica el compilador que usaremos CC = g++ # COMPILER_FLAGS especifica las banderas que se le aplican al compilador. # -w elimina TODAS las advertencias # -Wl,-subsystem,windows elimina la ventana de la consola COMPILER_FLAGS = -w -Wl,-subsystem,windows # LINKER_FLAGS establece las librerías a usar durante el proceso de link LINKER_FLAGS = -lmingw32 -lSDL2main -lSDL2 # APP specifies el nombre del ejecutable APP = main # Este es el objetivo para compilar nuestro ejecutable all : $(FILES) $(CC) $(FILES) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(APP) |
Para usarlo, creamos un archivo en el mismo directorio donde tengamos nuestro código fuente, copiamos el código anterior y lo guardamos como Makefile (con mayúscula M, sin extensión). Ahora solo queda lanzar su línea de comando con acceso a make.exe, y ejecutarlo para compilar nuestro proyecto de ejemplo.
No comments:
Post a Comment