Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
64Activity
0 of .
Results for:
No results containing your search query
P. 1
Como Hacer Un Makefile

Como Hacer Un Makefile

Ratings: (0)|Views: 8,420 |Likes:
Published by Hichōkei Yūki
Guia del Club.net para utilizar otros IDE como Visual Studio, y poder compilar lo programado en Linux con un Makefile
Guia del Club.net para utilizar otros IDE como Visual Studio, y poder compilar lo programado en Linux con un Makefile

More info:

Published by: Hichōkei Yūki on Oct 03, 2010
Copyright:Attribution Non-commercial Share Alike

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF or read online from Scribd
See more
See less

07/21/2013

pdf

Como hacer un
Makefile
Guías Granada.NET
(Junio 2008)
Óscar Valor
Oscar@granada.dotnetclubs.com
Vicepresidente de club .Net de Granada
-2-
A lo largo de este breve documento, vamos a intentar explicaos de la forma más sencilla
posible como lograr hacer un makefile que funcione y no morir en el intento (o borrarnos la practica
por el camino, que no sé que es peor).
Partamos de un programa muy sencillo llamado, en un alarde de originalidad, programa.cpp
tal que así:
#include <iostream>
using namespaces t d ;
intm a i n ( )
{
cout <<" \n Estudiando para conquistar el mundo... \n";
}Bueno amigos, veamos como es eso que dicen que es tan difícil, vamos a empezar por lo
más sencillo, compilar programa.cpp desde consola:
[consola]$> make programa
Hasta aquí todo muy bonito, se crea el ejecutable programa (en algunas consolas de Linux
para ejecutar el programa es necesario poner[ c o n s o l a ] $ > . / p r o g r a m aindicando con el ./ que
es en este fichero). Vamos a hacerlo usando g++
[consola]$> g++ programa.cpp
De esta manera ha creado el ejecutable, pero con el nombrea . o u tque es mucho mas feo
quep r o g r a m a. Así que vamos a ponerle el nombre que nosotros queramos
[consola]$> g++ programa.cpp -o cmundo
De esta manera le decimos al compilador el fichero de salida (-o) se va a llamarc m u n d o
(palabra en clave de conquistar el mundo).
Ahora vamos a crear un fichero objeto, que se llamaráp r o g r a m a . o (Los ficheros objeto son
los ficheros compilados con nuestro código que más adelante nos sirven para poder enlazar
programas entre sí, y que nadie sepa que hemos escrito en los ficheros fuentes, pero puedan usar
nuestros programas). Para hacer esto hay que usar la palabra -c
[consola]$> g++ -c programa.cpp
Ahora nos ha creado el objetop r o g r a m a . o, pero mira por donde se me ha olvidado poner -
o programa y esta vez linux está de nuestro lado, ha hecho el programa con el nombre bien (un
aplauso para linux). Vamos a probar poniendo todas las opciones anteriores:
[consola]$> g++ -c programa.cpp -o programa
Y ahora nos sale un archivo llamadap r o g r a m a, que no lo podemos ejecutar, ya la hemos
liado. Nooo, vamos a ver, hemos dicho que con -c se sacan objetos, pues hemos creado un objeto
con un nombre un poco conflictivo, el nombre del ejecutable que queríamos sacar. Así que habrá
que ponerlo bien:
[consola]$> g++ -c programa.cpp -o programa.o
Ahora ya no se lía nadie. Bien vamos a ver que hemos visto. Cuando se genera un archivo
cong + + el compilador por defecto va a sacar el ejecutable como a . o u t, así que usaremos - opara
decirle como queremos que se llame y cuando le ponemos el- c va a sacar por defecto el objeto
programa.o.
-3-
Bueno, llegamos a lo que todos temíamos: El Makefile, Asesino de Almas. Vamos a
empezar por algo sencillo, un fichero llamado Makefile tal que así:
.
g++ programa.cpp -o cmundo
Y yasta, hemos puesto lo que habíamos hecho en consola. Fijaos en un detalle. He puesto un
punto al principio, pero no porque haya que ponerlo, sino para representar que las instrucciones en
consola SIEMPRE hay que ponerlas con una tabulación dentro del makefile. Vale, ahora vamos a
ejecutarlo desde consola:
[consola]$>make
Makefile:1: *** las instrucciones comenzaron antes del primer objetivo.
Alto.
Ya la hemos liado. Mira que sabía que era complicado. ¡¿¡¿Y que me está contando de
noseque objetivos?!?!. Vale, que no cunda el pánico, en una línea de código no nos podemos haber
equivocado mucho. Aquí pasa lo siguiente tenemos que añadirle una etiqueta (su nombre de verdad
es objetivo, pero con etiqueta creo que es mas como para todos). Probablemente no sepáis que es
una etiqueta si usáis lenguajes de alto nivel como C++, C#, Java, porque usar las etiquetas en estos
lenguajes es vender tu alma al diablo y luego vas al infierno, como todo el mundo sabe. Pero en
otros lenguajes como ensamblador (ese lenguaje que todos queremos tanto) es imprescindible. Una
etiqueta se describe con un nombre con dos puntos, por ejemplo,etiqueta : , que sirve para que
desde cualquier otra parte del programa si se llama a la etiqueta (poniendo su nombre sin los dos
puntos) el programa sigue ejecutándose desde la etiqueta (y en los makefiles terminará de ejecutarse
cuando empiece una nueva etiqueta), se podría decir que es como una función, a la que llamas para
ejecutar un código. Así que esto quedaría así:
programa :
g++ -c programa.cpp -o cmundo
Expliquemos un poco lo que pone, la etiqueta programa (también conocida en este caso
como regla explícita, ya que impone unas reglas de compilación) va a compilarp r o g r a m a . c p p, y en
la siguiente línea con un tabulador empezamos a escribir la línea de código que habíamos escrito en
consola, y a partir de ahora desde consola sólo habrá que ponerm a k e para que se ejecute.
[consola]$> make
Y todo va bien y funciona de maravilla. Uff, casi parece difícil. Bueno, ahora vamos a
complicarlo un poco. Alguien en un arranque de euforia quiere añadir un fichero .h que ha creado,
llamadof u n c i o n e s . hy es tal que así:
#include <iostream>
using namespaces t d ;
voidi m p r i m i r (char* c)
{
cout << c;
}Y a programa.cpp lo cambiamos por:
#include <funciones.h>
using namespaces t d ;
intm a i n ( )
{
Imprimir("\n Estudiando para conquistar el mundo... \n");
}

Activity (64)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Leonel Soriano liked this
Sebas Plá liked this
Gaby liked this
Ózkr Ruiz liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->