Bonjour,
Je me pose une question sur les Makefile. J'ai une arbo qui contient de s
sources et je lance le make, les .o sont créés dans l'arbo. J 'aurai aimé
qu'ils soient tous mis à un endroit bien précis. Est-ce possi ble?
Bonjour,
Je me pose une question sur les Makefile. J'ai une arbo qui contient de s
sources et je lance le make, les .o sont créés dans l'arbo. J 'aurai aimé
qu'ils soient tous mis à un endroit bien précis. Est-ce possi ble?
Bonjour,
Je me pose une question sur les Makefile. J'ai une arbo qui contient de s
sources et je lance le make, les .o sont créés dans l'arbo. J 'aurai aimé
qu'ils soient tous mis à un endroit bien précis. Est-ce possi ble?
Gaëtan PERRIER wrote:
> Bonjour,
Bonsoir,
> Je me pose une question sur les Makefile. J'ai une arbo qui contient des
> sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
> qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
CC = gcc
CFLAGS = -g -O0 -Wall
SRCPATH = ./
OBJPATH = ./obj/
%.o: %.c
$(CC) $(CFLAGS) -c $(SRCPATH)$< -o $(OBJPATH)$@
Voila un bout de ce que j'ai sous la main.
Soit les fichiers sources à la racine obtiennent leur fichiers .o dans
le répertoire obj.
Gaëtan PERRIER wrote:
> Bonjour,
Bonsoir,
> Je me pose une question sur les Makefile. J'ai une arbo qui contient des
> sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
> qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
CC = gcc
CFLAGS = -g -O0 -Wall
SRCPATH = ./
OBJPATH = ./obj/
%.o: %.c
$(CC) $(CFLAGS) -c $(SRCPATH)$< -o $(OBJPATH)$@
Voila un bout de ce que j'ai sous la main.
Soit les fichiers sources à la racine obtiennent leur fichiers .o dans
le répertoire obj.
Gaëtan PERRIER wrote:
> Bonjour,
Bonsoir,
> Je me pose une question sur les Makefile. J'ai une arbo qui contient des
> sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
> qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
CC = gcc
CFLAGS = -g -O0 -Wall
SRCPATH = ./
OBJPATH = ./obj/
%.o: %.c
$(CC) $(CFLAGS) -c $(SRCPATH)$< -o $(OBJPATH)$@
Voila un bout de ce que j'ai sous la main.
Soit les fichiers sources à la racine obtiennent leur fichiers .o dans
le répertoire obj.
Bonjour,
Je me pose une question sur les Makefile. J'ai une arbo qui contient des
sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
Bonjour,
Je me pose une question sur les Makefile. J'ai une arbo qui contient des
sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
Bonjour,
Je me pose une question sur les Makefile. J'ai une arbo qui contient des
sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
Le Fri, 26 Sep 2008 21:22:55 +0200
Franck Joncourt a écrit:
Merci pour ta réponse rapide mais ensuite tu fais comment pour le link? De
plus il faut recréer l'arbo source dans ./obj sinon ça ne fon ctionne pas, non?
Moi j'ai un truc du genre:
./inc/*.h
./src/*.c
./*.c
./Makefile
Je ne veux pas polluer ./inc et ./src
J'ai donc commencé avec un Makefile du genre:
CC=gcc
CFLAGS=-W -Wall -ggdb3
LDFLAGS=
EXEC=mon_prog
SRC= $(wildcard *.c)
SRC+=$(wildcard src/*.c)
OBJ= $(SRC:.c=.o)
INC_PATH=./itf/:./inc/
all: $(EXEC)
$(EXEC): $(OBJ)
@$(CC) -o $@ $^ $(LDFLAGS)
%.o: %.c
@C_INCLUDE_PATH=$(INC_PATH) $(CC) -o $@ -c $< $(CFLAGS)
Ce qui me crée des .o dans ./src/
Si je rajoute ce que tu m'indiques ça me crée bien les .o dan s ./obj/
et ./obj/src (à condition que je crée cette arbo avant). Mais ensuite pour le
link ça ne marche pas. J'ai essayé de modifier en
$(EXEC): $(OBJ)
@$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
mais sans succès.
Le Fri, 26 Sep 2008 21:22:55 +0200
Franck Joncourt <franck.mail@dthconnex.com> a écrit:
Merci pour ta réponse rapide mais ensuite tu fais comment pour le link? De
plus il faut recréer l'arbo source dans ./obj sinon ça ne fon ctionne pas, non?
Moi j'ai un truc du genre:
./inc/*.h
./src/*.c
./*.c
./Makefile
Je ne veux pas polluer ./inc et ./src
J'ai donc commencé avec un Makefile du genre:
CC=gcc
CFLAGS=-W -Wall -ggdb3
LDFLAGS=
EXEC=mon_prog
SRC= $(wildcard *.c)
SRC+=$(wildcard src/*.c)
OBJ= $(SRC:.c=.o)
INC_PATH=./itf/:./inc/
all: $(EXEC)
$(EXEC): $(OBJ)
@$(CC) -o $@ $^ $(LDFLAGS)
%.o: %.c
@C_INCLUDE_PATH=$(INC_PATH) $(CC) -o $@ -c $< $(CFLAGS)
Ce qui me crée des .o dans ./src/
Si je rajoute ce que tu m'indiques ça me crée bien les .o dan s ./obj/
et ./obj/src (à condition que je crée cette arbo avant). Mais ensuite pour le
link ça ne marche pas. J'ai essayé de modifier en
$(EXEC): $(OBJ)
@$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
mais sans succès.
Le Fri, 26 Sep 2008 21:22:55 +0200
Franck Joncourt a écrit:
Merci pour ta réponse rapide mais ensuite tu fais comment pour le link? De
plus il faut recréer l'arbo source dans ./obj sinon ça ne fon ctionne pas, non?
Moi j'ai un truc du genre:
./inc/*.h
./src/*.c
./*.c
./Makefile
Je ne veux pas polluer ./inc et ./src
J'ai donc commencé avec un Makefile du genre:
CC=gcc
CFLAGS=-W -Wall -ggdb3
LDFLAGS=
EXEC=mon_prog
SRC= $(wildcard *.c)
SRC+=$(wildcard src/*.c)
OBJ= $(SRC:.c=.o)
INC_PATH=./itf/:./inc/
all: $(EXEC)
$(EXEC): $(OBJ)
@$(CC) -o $@ $^ $(LDFLAGS)
%.o: %.c
@C_INCLUDE_PATH=$(INC_PATH) $(CC) -o $@ -c $< $(CFLAGS)
Ce qui me crée des .o dans ./src/
Si je rajoute ce que tu m'indiques ça me crée bien les .o dan s ./obj/
et ./obj/src (à condition que je crée cette arbo avant). Mais ensuite pour le
link ça ne marche pas. J'ai essayé de modifier en
$(EXEC): $(OBJ)
@$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
mais sans succès.
Gaëtan PERRIER wrote:
> Le Fri, 26 Sep 2008 21:22:55 +0200
> Franck Joncourt a écrit:
[...]
>
> Merci pour ta réponse rapide mais ensuite tu fais comment pour le link? De
> plus il faut recréer l'arbo source dans ./obj sinon ça ne fonctionne pas,
> non?
>
> Moi j'ai un truc du genre:
>
> ./inc/*.h
> ./src/*.c
> ./*.c
> ./Makefile
>
> Je ne veux pas polluer ./inc et ./src
>
> J'ai donc commencé avec un Makefile du genre:
>
> CC=gcc
> CFLAGS=-W -Wall -ggdb3
> LDFLAGS > > EXEC=mon_prog
> SRC= $(wildcard *.c)
> SRC+=$(wildcard src/*.c)
> OBJ= $(SRC:.c=.o)
> INC_PATH=./itf/:./inc/
>
> all: $(EXEC)
>
> $(EXEC): $(OBJ)
> @$(CC) -o $@ $^ $(LDFLAGS)
>
> %.o: %.c
> @C_INCLUDE_PATH=$(INC_PATH) $(CC) -o $@ -c $< $(CFLAGS)
Quelque chose du genre:
SRCPATH = ./
OBJPATH = ./obj/
%.o: %.c
$(CC) $(CFLAGS) -c $(SRCPATH)$< -o $(OBJPATH)$@
mon_prog: ma liste_de _fichier_o
$(CC) $(LDFLAGS) $(OBJPATH)* -o $(HEXPATH)$@
Je n'ai jamais utilisé les wilcards auparavant. Va falloir que je creuse.
> Ce qui me crée des .o dans ./src/
> Si je rajoute ce que tu m'indiques ça me crée bien les .o dans ./obj/
> et ./obj/src (à condition que je crée cette arbo avant). Mais ensuite pour
> le link ça ne marche pas. J'ai essayé de modifier en
> $(EXEC): $(OBJ)
> @$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
>
> mais sans succès.
--
Franck Joncourt
http://debian.org - http://smhteam.info/wiki/
Fingerprint : C10E D1D0 EF70 0A2A CACF 9A3C C490 534E 75C0 89FE
Gaëtan PERRIER wrote:
> Le Fri, 26 Sep 2008 21:22:55 +0200
> Franck Joncourt <franck.mail@dthconnex.com> a écrit:
[...]
>
> Merci pour ta réponse rapide mais ensuite tu fais comment pour le link? De
> plus il faut recréer l'arbo source dans ./obj sinon ça ne fonctionne pas,
> non?
>
> Moi j'ai un truc du genre:
>
> ./inc/*.h
> ./src/*.c
> ./*.c
> ./Makefile
>
> Je ne veux pas polluer ./inc et ./src
>
> J'ai donc commencé avec un Makefile du genre:
>
> CC=gcc
> CFLAGS=-W -Wall -ggdb3
> LDFLAGS > > EXEC=mon_prog
> SRC= $(wildcard *.c)
> SRC+=$(wildcard src/*.c)
> OBJ= $(SRC:.c=.o)
> INC_PATH=./itf/:./inc/
>
> all: $(EXEC)
>
> $(EXEC): $(OBJ)
> @$(CC) -o $@ $^ $(LDFLAGS)
>
> %.o: %.c
> @C_INCLUDE_PATH=$(INC_PATH) $(CC) -o $@ -c $< $(CFLAGS)
Quelque chose du genre:
SRCPATH = ./
OBJPATH = ./obj/
%.o: %.c
$(CC) $(CFLAGS) -c $(SRCPATH)$< -o $(OBJPATH)$@
mon_prog: ma liste_de _fichier_o
$(CC) $(LDFLAGS) $(OBJPATH)* -o $(HEXPATH)$@
Je n'ai jamais utilisé les wilcards auparavant. Va falloir que je creuse.
> Ce qui me crée des .o dans ./src/
> Si je rajoute ce que tu m'indiques ça me crée bien les .o dans ./obj/
> et ./obj/src (à condition que je crée cette arbo avant). Mais ensuite pour
> le link ça ne marche pas. J'ai essayé de modifier en
> $(EXEC): $(OBJ)
> @$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
>
> mais sans succès.
--
Franck Joncourt
http://debian.org - http://smhteam.info/wiki/
Fingerprint : C10E D1D0 EF70 0A2A CACF 9A3C C490 534E 75C0 89FE
Gaëtan PERRIER wrote:
> Le Fri, 26 Sep 2008 21:22:55 +0200
> Franck Joncourt a écrit:
[...]
>
> Merci pour ta réponse rapide mais ensuite tu fais comment pour le link? De
> plus il faut recréer l'arbo source dans ./obj sinon ça ne fonctionne pas,
> non?
>
> Moi j'ai un truc du genre:
>
> ./inc/*.h
> ./src/*.c
> ./*.c
> ./Makefile
>
> Je ne veux pas polluer ./inc et ./src
>
> J'ai donc commencé avec un Makefile du genre:
>
> CC=gcc
> CFLAGS=-W -Wall -ggdb3
> LDFLAGS > > EXEC=mon_prog
> SRC= $(wildcard *.c)
> SRC+=$(wildcard src/*.c)
> OBJ= $(SRC:.c=.o)
> INC_PATH=./itf/:./inc/
>
> all: $(EXEC)
>
> $(EXEC): $(OBJ)
> @$(CC) -o $@ $^ $(LDFLAGS)
>
> %.o: %.c
> @C_INCLUDE_PATH=$(INC_PATH) $(CC) -o $@ -c $< $(CFLAGS)
Quelque chose du genre:
SRCPATH = ./
OBJPATH = ./obj/
%.o: %.c
$(CC) $(CFLAGS) -c $(SRCPATH)$< -o $(OBJPATH)$@
mon_prog: ma liste_de _fichier_o
$(CC) $(LDFLAGS) $(OBJPATH)* -o $(HEXPATH)$@
Je n'ai jamais utilisé les wilcards auparavant. Va falloir que je creuse.
> Ce qui me crée des .o dans ./src/
> Si je rajoute ce que tu m'indiques ça me crée bien les .o dans ./obj/
> et ./obj/src (à condition que je crée cette arbo avant). Mais ensuite pour
> le link ça ne marche pas. J'ai essayé de modifier en
> $(EXEC): $(OBJ)
> @$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
>
> mais sans succès.
--
Franck Joncourt
http://debian.org - http://smhteam.info/wiki/
Fingerprint : C10E D1D0 EF70 0A2A CACF 9A3C C490 534E 75C0 89FE
Gaëtan PERRIER wrote:
> Bonjour,
>
> Je me pose une question sur les Makefile. J'ai une arbo qui contient des
> sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
> qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
Outre les solutions déjà mentionnées, pour son propre code, on pourrait
utiliser autre chose que GNU make pour le construire, et notamment omake
(ou scons, jam, ant, ...).
Gaëtan PERRIER wrote:
> Bonjour,
>
> Je me pose une question sur les Makefile. J'ai une arbo qui contient des
> sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
> qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
Outre les solutions déjà mentionnées, pour son propre code, on pourrait
utiliser autre chose que GNU make pour le construire, et notamment omake
(ou scons, jam, ant, ...).
Gaëtan PERRIER wrote:
> Bonjour,
>
> Je me pose une question sur les Makefile. J'ai une arbo qui contient des
> sources et je lance le make, les .o sont créés dans l'arbo. J'aurai aimé
> qu'ils soient tous mis à un endroit bien précis. Est-ce possible?
Outre les solutions déjà mentionnées, pour son propre code, on pourrait
utiliser autre chose que GNU make pour le construire, et notamment omake
(ou scons, jam, ant, ...).
Le Fri, 26 Sep 2008 22:18:14 +0200
Basile STARYNKEVITCH a écrit:utiliser autre chose que GNU make pour le construire, et notamment omake
Pourquoi pas? Un petit exemple avec omake?
Le Fri, 26 Sep 2008 22:18:14 +0200
Basile STARYNKEVITCH <basile@starynkevitch.net> a écrit:
utiliser autre chose que GNU make pour le construire, et notamment omake
Pourquoi pas? Un petit exemple avec omake?
Le Fri, 26 Sep 2008 22:18:14 +0200
Basile STARYNKEVITCH a écrit:utiliser autre chose que GNU make pour le construire, et notamment omake
Pourquoi pas? Un petit exemple avec omake?
avec les wildcards je me retrouve par ex. avec OBJ=toto.o src/titi.o
et du coup quand on rajoute $(OBJPATH) ça ne s'applique que à toto.o et donc
il ne trouve pas titi.o
Ce qui me crée des .o dans ./src/
Si je rajoute ce que tu m'indiques ça me crée bien les .o d ans ./obj/
et ./obj/src (à condition que je crée cette arbo avant). Ma is ensuite pour
le link ça ne marche pas. J'ai essayé de modifier en
$(EXEC): $(OBJ)
@$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
mais sans succès.
avec les wildcards je me retrouve par ex. avec OBJ=toto.o src/titi.o
et du coup quand on rajoute $(OBJPATH) ça ne s'applique que à toto.o et donc
il ne trouve pas titi.o
Ce qui me crée des .o dans ./src/
Si je rajoute ce que tu m'indiques ça me crée bien les .o d ans ./obj/
et ./obj/src (à condition que je crée cette arbo avant). Ma is ensuite pour
le link ça ne marche pas. J'ai essayé de modifier en
$(EXEC): $(OBJ)
@$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
mais sans succès.
avec les wildcards je me retrouve par ex. avec OBJ=toto.o src/titi.o
et du coup quand on rajoute $(OBJPATH) ça ne s'applique que à toto.o et donc
il ne trouve pas titi.o
Ce qui me crée des .o dans ./src/
Si je rajoute ce que tu m'indiques ça me crée bien les .o d ans ./obj/
et ./obj/src (à condition que je crée cette arbo avant). Ma is ensuite pour
le link ça ne marche pas. J'ai essayé de modifier en
$(EXEC): $(OBJ)
@$(CC) -o $(OBJ_PATH)$@ $^ $(LDFLAGS)
mais sans succès.
Moi j'ai un truc du genre:
./inc/*.h
./src/*.c
./*.c
./Makefile
Je ne veux pas polluer ./inc et ./src
Moi j'ai un truc du genre:
./inc/*.h
./src/*.c
./*.c
./Makefile
Je ne veux pas polluer ./inc et ./src
Moi j'ai un truc du genre:
./inc/*.h
./src/*.c
./*.c
./Makefile
Je ne veux pas polluer ./inc et ./src
[...]
>>> Moi j'ai un truc du genre:
>>>
>>> ./inc/*.h
>>> ./src/*.c
>>> ./*.c
>>> ./Makefile
>>>
>>> Je ne veux pas polluer ./inc et ./src
J'ai créer des modules config, daemon, cmdline ... pour le programme
principal fwknop (fwknopd).
[code]
$ find .
.
./config
./config/config.h
./config/config.c
./daemon
./daemon/daemon.h
./daemon/daemon.c
./fwknop
./fwknop/fwknop.h
./fwknop/fwknop.c
./fwknop/stdtypes.h
./Makefile
./cmdline
./cmdline/cmdline.c
./cmdline/cmdline.h
./net
./net/net.h
./net/net.c
$ make all
rm -f *.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c fwknop/fwknop.c -o fwknop.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c config/config.c -o config.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c daemon/daemon.c -o daemon.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c net/net.c -o net.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c cmdline/cmdline.c -o cmdline.o
gcc fwknop.o config.o daemon.o net.o cmdline.o -o fwknopd
[/code]
Avec un Makefile comme ceci:
Normalement je mets tous les headers dans le même répertoire mais je
voulais essayer de cette façon.
[quote=Makefile]
CC = gcc
CFLAGS = -Wall -O0 -D__DEBUG
HEADERS = -I daemon -I config -I net -I cmdline -I fwknop
PROGRAM = fwknopd
vpath %.c cmdline:config:net:daemon:fwknop
%.o: %.c
$(CC) $(CFLAGS) $(HEADERS) -c $< -o $@
$(PROGRAM): fwknop.o config.o daemon.o net.o cmdline.o
$(CC) $^ -o $@
clean:
rm -f *.o
clean_all: clean
rm -f $(PROGRAM)
all: clean $(PROGRAM)
.PHONY: clean clean_all all
[/quote]
Donc à priori je dirais que la seule chose que tu as à changer ce sont
les variables.
J'espère que c'est le bon ce coup ci.
Je n'ai pas créé de répertoire objets car je ne m'en sort avec mon
Makefile autrement. Donc tous les .o arriveront à la racine où se trouve
le Makefile.
[...]
>>> Moi j'ai un truc du genre:
>>>
>>> ./inc/*.h
>>> ./src/*.c
>>> ./*.c
>>> ./Makefile
>>>
>>> Je ne veux pas polluer ./inc et ./src
J'ai créer des modules config, daemon, cmdline ... pour le programme
principal fwknop (fwknopd).
[code]
$ find .
.
./config
./config/config.h
./config/config.c
./daemon
./daemon/daemon.h
./daemon/daemon.c
./fwknop
./fwknop/fwknop.h
./fwknop/fwknop.c
./fwknop/stdtypes.h
./Makefile
./cmdline
./cmdline/cmdline.c
./cmdline/cmdline.h
./net
./net/net.h
./net/net.c
$ make all
rm -f *.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c fwknop/fwknop.c -o fwknop.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c config/config.c -o config.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c daemon/daemon.c -o daemon.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c net/net.c -o net.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c cmdline/cmdline.c -o cmdline.o
gcc fwknop.o config.o daemon.o net.o cmdline.o -o fwknopd
[/code]
Avec un Makefile comme ceci:
Normalement je mets tous les headers dans le même répertoire mais je
voulais essayer de cette façon.
[quote=Makefile]
CC = gcc
CFLAGS = -Wall -O0 -D__DEBUG
HEADERS = -I daemon -I config -I net -I cmdline -I fwknop
PROGRAM = fwknopd
vpath %.c cmdline:config:net:daemon:fwknop
%.o: %.c
$(CC) $(CFLAGS) $(HEADERS) -c $< -o $@
$(PROGRAM): fwknop.o config.o daemon.o net.o cmdline.o
$(CC) $^ -o $@
clean:
rm -f *.o
clean_all: clean
rm -f $(PROGRAM)
all: clean $(PROGRAM)
.PHONY: clean clean_all all
[/quote]
Donc à priori je dirais que la seule chose que tu as à changer ce sont
les variables.
J'espère que c'est le bon ce coup ci.
Je n'ai pas créé de répertoire objets car je ne m'en sort avec mon
Makefile autrement. Donc tous les .o arriveront à la racine où se trouve
le Makefile.
[...]
>>> Moi j'ai un truc du genre:
>>>
>>> ./inc/*.h
>>> ./src/*.c
>>> ./*.c
>>> ./Makefile
>>>
>>> Je ne veux pas polluer ./inc et ./src
J'ai créer des modules config, daemon, cmdline ... pour le programme
principal fwknop (fwknopd).
[code]
$ find .
.
./config
./config/config.h
./config/config.c
./daemon
./daemon/daemon.h
./daemon/daemon.c
./fwknop
./fwknop/fwknop.h
./fwknop/fwknop.c
./fwknop/stdtypes.h
./Makefile
./cmdline
./cmdline/cmdline.c
./cmdline/cmdline.h
./net
./net/net.h
./net/net.c
$ make all
rm -f *.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c fwknop/fwknop.c -o fwknop.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c config/config.c -o config.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c daemon/daemon.c -o daemon.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c net/net.c -o net.o
gcc -Wall -O0 -D__DEBUG -I daemon -I config -I net -I cmdline
-I fwknop -c cmdline/cmdline.c -o cmdline.o
gcc fwknop.o config.o daemon.o net.o cmdline.o -o fwknopd
[/code]
Avec un Makefile comme ceci:
Normalement je mets tous les headers dans le même répertoire mais je
voulais essayer de cette façon.
[quote=Makefile]
CC = gcc
CFLAGS = -Wall -O0 -D__DEBUG
HEADERS = -I daemon -I config -I net -I cmdline -I fwknop
PROGRAM = fwknopd
vpath %.c cmdline:config:net:daemon:fwknop
%.o: %.c
$(CC) $(CFLAGS) $(HEADERS) -c $< -o $@
$(PROGRAM): fwknop.o config.o daemon.o net.o cmdline.o
$(CC) $^ -o $@
clean:
rm -f *.o
clean_all: clean
rm -f $(PROGRAM)
all: clean $(PROGRAM)
.PHONY: clean clean_all all
[/quote]
Donc à priori je dirais que la seule chose que tu as à changer ce sont
les variables.
J'espère que c'est le bon ce coup ci.
Je n'ai pas créé de répertoire objets car je ne m'en sort avec mon
Makefile autrement. Donc tous les .o arriveront à la racine où se trouve
le Makefile.