Make: *** [src/fonction.o] Error 1

Signaler
-
 Spenzys -
Bonjour,

Je souhaite créer un fichier objet à partir d'un fichier .c en utilisant un makefile contenant le code suivant:


src/fonction.o : src/fonction.c
gcc -c src/fonction.c -I include


(il y a effectivement bien une tabulation avant le gcc mais elle ne s'affiche pas sur le forum)

mais lorsque j'exécute "make src/fonction.o", j'obtient ceci:


src/fonction.c:2:19: fatal error: types.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'src/fonction.o' failed
make: *** [src/fonction.o] Error 1


Je précise que mon dossier include contient bien mon fichier.h et que lorsque j'execute "gcc -c src/fonction.c -I include" directement dans le compilateur, tout marche parfaitement.

Merci de votre aide par avance!!

Configuration: Macintosh / Chrome 78.0.3904.97
C'est pourtant clair, tu as écris ton makefile, de façon à se qu'il aille chercher un dossier ou un fichier.. or selon le code retour, types.h n'existe pas. Je t'invite à partager ton code entier (makefile) s'il y a, mais aussi l'arborescence COMPLETE de ton projet.
Merci.
Ce qui m'étonne le plus après reflexion c'est de voir que ton fichier .o que tu cherches à crée n'a aucune dépendance de header (.h) .. essaye de rajouter les .h après ta premiere ligne regroupant cible et dependance..
Voici mon makefile (j'ai ajouté des dépendances .h)

src/fonction.o : src/fonction.c
gcc -c src/fonction.c -I include

src/fonction.c : include/types.h


voici mon fichier types .h:

#ifndef TYPES
#define TYPES

struct point3D{
double x;
double y;
double z;
};

struct point2D{
double x;
double y;
};


#endif


et voici mon fichier fonction.c:


#include <stdio.h>
#include "types.h"


struct point3D Lorentz( struct point3D u, double sigma,double rho,double beta, double dt)
{
// determine la vitesse a l'instant t
struct point3D v;
v.x=sigma*(u.y-u.x);
v.y=u.x*(rho-u.z)-u.y;
v.z=u.x*u.y-(beta*u.z);

// Actuallise la position du point
u.x=u.x+v.x*dt;
u.y=u.y+v.y*dt;
u.z=u.z+v.z*dt;
return(u);

}

struct point2D Lotka_Volterra( struct point2D u, double alpha, double beta,double delta, double gamma, double dt )
{
// dterminae la vitesse
struct point2D v;
v.x=(alpha*u.x)-(beta*u.y);
v.y=(delta*u.x)-(gamma*u.y);

// Actuallise la position du point
u.x=u.x+v.x*dt;
u.y=u.y+v.y*dt;
return(u);
}

double Bifurcation_fourche( double u,double mu, double alpha, double dt)
{
// dterminae la vitesse
double v;
v=mu*u+alpha*(u*u*u);

// Actuallise la position du point
u=u+v*dt;
return(u);
}



Le projet est structuré comme suit:

projet/makefile.mk
projet/include/types.h
projet/src/fonction.c


sachant que je cherche à creer fonction.o dans le fichier src.
A première vue :
gcc -c src/fonction.c -I include

1) Mettre un caractère tabulation en début de ligne (il y est peut-être, avec un affichage non conforme)
2) Forcer la destination
gcc -c -o src/fonction.o src/fonction.c  -I include
Merci pour votre réponse
Il y avait bien une tabulation, c'était effectivement juste un problème d'affichage. Par contre j'ai essayé la commande suggérée mais mon problème reste le même
Est-il possible que je fasse une erreur lorsque j'utilise le makefile avec le terminal? J'utilise la commande
make src/fonction.o