Utiliser accolades dans une arborescence (dans un makefile)
Résolu/Fermé
Utilisateur anonyme
-
Modifié par orinym le 28/09/2013 à 05:50
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 30 sept. 2013 à 09:30
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 30 sept. 2013 à 09:30
A voir également:
- Utiliser accolades dans une arborescence (dans un makefile)
- Utiliser chromecast - Guide
- Comment utiliser l'ia - Accueil - Guide Intelligence artificielle
- Utiliser iphone comme webcam - Guide
- Utiliser une tablette comme ecran pc - Guide
- Comment utiliser utorrent - Télécharger - Téléchargement & Transfert
2 réponses
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
28 sept. 2013 à 11:26
28 sept. 2013 à 11:26
Ça me paraît suspect d'avoir plusieurs ".c" utilisé pour former un simple ".o", et j'avoue ne pas vraiment voir l'intérêt (d'ailleurs il faudrait vérifier que la commande gcc que tu veux déclencher fonctionne dans un shell avant de la traduire en makefile).
Généralement la réunion de plusieurs ".o" se traduit par une librairie statique (".a") ou dynamique (".so"), et ensuite tu peux lier ton projet à cette librairie.
Ici tu as un makefile générique "maison" :
https://forums.commentcamarche.net/forum/affich-21500291-pb-makefile-suite-portage-vers-autre-noyau#7
Sinon l'idéal, c'est d'utiliser des outils comme automake et compagnie, mais disons que ce n'est pas trivial à utiliser.
Bonne chance
Généralement la réunion de plusieurs ".o" se traduit par une librairie statique (".a") ou dynamique (".so"), et ensuite tu peux lier ton projet à cette librairie.
Ici tu as un makefile générique "maison" :
https://forums.commentcamarche.net/forum/affich-21500291-pb-makefile-suite-portage-vers-autre-noyau#7
Sinon l'idéal, c'est d'utiliser des outils comme automake et compagnie, mais disons que ce n'est pas trivial à utiliser.
Bonne chance
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
28 sept. 2013 à 12:27
28 sept. 2013 à 12:27
Je me posais justement la question pour ce problème de .o/.c.
L'intérêt est que pour nos études nous sommes soumis à une norme pour coder qui limite le nombre de fonctions par fichier, nous sommes donc obligés de faire plusieurs fichiers pour respecter ladite norme.
Tu diras de ma part à ton prof que sa convention est stupide, car c'est le meilleur moyen d'inciter les élèves à faire des grosses fonctions bien moches au lieu d'écrire un programme bien structuré.
Ceci dit, il faudrait voir le fichier dont tu parles, peut-être que les fonctions qu'il expose pourraient être séparées en plusieurs fichiers (et chacun d'eux conduirait à générer un ".o").
Par exemple supposons que ce fichier s'appelle "maths.h" et qu'il regroupe des fonctions de trignométrie et d'algebre, on pourrait imaginer avoir un dossiers maths qui contient un fichier trignometrie.h et algebre.h. Et dans ce cas là, effectivement, c'est un découpage qui réduit le nombre de fonctions et qui a du sens. Et c'est à mon avis la "bonne" manière de résoudre le problème.
Maintenant, si on revient à ton fichier découpé en 3 sous fichiers, je ne vois pas l'intérêt de compiler les 3 dans le même ".o".
Ceci dit l'idée des .a est sans doute la meilleure pour faire des bibliothèques j'aurais du y penser c'est vrai.
À mon avis c'est disproportionné vu ton besoin.
Je ne pense pas qu'il soit possible avec gcc de faire un unique .o avec plusieurs .c. l'option -c n'admet pas de nom de cible et est incompatible avec -o.
Je ne pense pas non plus car je n'en ai jamais eu le besoin. À mon avis ce n'est pas possible car ça n'a aucun intérêt :-)
Ceci dit, j'ai toujours le problème de savoir utiliser les {} dans une arborescence, j'avais vu cette notation mais je ne parviens pas à la reproduire ou à en trouver une explication sur internet.
C'est peut être une notation qui dépend du shell. Par exemple en bash tu peux écrire
Bonne chance
L'intérêt est que pour nos études nous sommes soumis à une norme pour coder qui limite le nombre de fonctions par fichier, nous sommes donc obligés de faire plusieurs fichiers pour respecter ladite norme.
Tu diras de ma part à ton prof que sa convention est stupide, car c'est le meilleur moyen d'inciter les élèves à faire des grosses fonctions bien moches au lieu d'écrire un programme bien structuré.
Ceci dit, il faudrait voir le fichier dont tu parles, peut-être que les fonctions qu'il expose pourraient être séparées en plusieurs fichiers (et chacun d'eux conduirait à générer un ".o").
Par exemple supposons que ce fichier s'appelle "maths.h" et qu'il regroupe des fonctions de trignométrie et d'algebre, on pourrait imaginer avoir un dossiers maths qui contient un fichier trignometrie.h et algebre.h. Et dans ce cas là, effectivement, c'est un découpage qui réduit le nombre de fonctions et qui a du sens. Et c'est à mon avis la "bonne" manière de résoudre le problème.
Maintenant, si on revient à ton fichier découpé en 3 sous fichiers, je ne vois pas l'intérêt de compiler les 3 dans le même ".o".
Ceci dit l'idée des .a est sans doute la meilleure pour faire des bibliothèques j'aurais du y penser c'est vrai.
À mon avis c'est disproportionné vu ton besoin.
Je ne pense pas qu'il soit possible avec gcc de faire un unique .o avec plusieurs .c. l'option -c n'admet pas de nom de cible et est incompatible avec -o.
Je ne pense pas non plus car je n'en ai jamais eu le besoin. À mon avis ce n'est pas possible car ça n'a aucun intérêt :-)
Ceci dit, j'ai toujours le problème de savoir utiliser les {} dans une arborescence, j'avais vu cette notation mais je ne parviens pas à la reproduire ou à en trouver une explication sur internet.
C'est peut être une notation qui dépend du shell. Par exemple en bash tu peux écrire
ls /{home,etc}qui liste le contenu de /home /etc. Ceci dit si ton makefile dépend du shell utilisé, ce n'est pas bon signe, car ça veut dire que quelqu'un qui n'utilise pas le bon shell ne pourra pas compiler ton programme.
Bonne chance
Tu diras de ma part à ton prof que sa convention est stupide, car c'est le meilleur moyen d'inciter les élèves à faire des grosses fonctions bien moches au lieu d'écrire un programme bien structuré.
Nous sommes également limités en nombre de lignes et de colonnes par fonctions.
C'est peut être une notation qui dépend du shell. Par exemple en bash tu peux écrire
ls /{home,etc}
qui liste le contenu de /home /etc. Ceci dit si ton makefile dépend du shell utilisé, ce n'est pas bon signe, car ça veut dire que quelqu'un qui n'utilise pas le bon shell ne pourra pas compiler ton programme.
C'est peut-être parce-que je suis en zsh? :/
Merci pour votre réponse.
Nous sommes également limités en nombre de lignes et de colonnes par fonctions.
C'est peut être une notation qui dépend du shell. Par exemple en bash tu peux écrire
ls /{home,etc}
qui liste le contenu de /home /etc. Ceci dit si ton makefile dépend du shell utilisé, ce n'est pas bon signe, car ça veut dire que quelqu'un qui n'utilise pas le bon shell ne pourra pas compiler ton programme.
C'est peut-être parce-que je suis en zsh? :/
Merci pour votre réponse.
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
28 sept. 2013 à 12:44
28 sept. 2013 à 12:44
Nous sommes également limités en nombre de lignes et de colonnes par fonctions.
Ça, à la limite ça me choque moins. Si tu utilises un outil de développement pour coder (par exemple kdevelop, anjuta, ou même un bon vieux vim) tu peux configurer ton éditeur pour qu'il passe automatiquement à la ligne quand tu atteins cette limite.
C'est peut-être parce-que je suis en zsh
Peu importe ce n'est pas la bonne manière de faire. Découpe simplement ton gros fichier ".c" en plusieurs fichiers ".c" (en faisant un découpage logique) et compile un fichier ".o" par fichier ".c" et à mon avis tu résoudras tous tes problèmes.
Ça, à la limite ça me choque moins. Si tu utilises un outil de développement pour coder (par exemple kdevelop, anjuta, ou même un bon vieux vim) tu peux configurer ton éditeur pour qu'il passe automatiquement à la ligne quand tu atteins cette limite.
C'est peut-être parce-que je suis en zsh
Peu importe ce n'est pas la bonne manière de faire. Découpe simplement ton gros fichier ".c" en plusieurs fichiers ".c" (en faisant un découpage logique) et compile un fichier ".o" par fichier ".c" et à mon avis tu résoudras tous tes problèmes.
Ça, à la limite ça me choque moins. Si tu utilises un outil de développement pour coder (par exemple kdevelop, anjuta, ou même un bon vieux vim) tu peux configurer ton éditeur pour qu'il passe automatiquement à la ligne quand tu atteins cette limite.
Je fais tout sous tty avec emacs.
Peu importe ce n'est pas la bonne manière de faire. Découpe simplement ton gros fichier ".c" en plusieurs fichiers ".c" (en faisant un découpage logique) et compile un fichier ".o" par fichier ".c" et à mon avis tu résoudras tous tes problèmes.
Je me retrouve cependant avec le problème de la lecture: c'est assez lourd.
Mais bon j'en serai sûrement réduit à ça.
Si cette notation fonctionne sous bash, elle ne semble pas fonctionner sous zsh malheureusement. Pour l'activer, je pense que je devrais passer en bash au début du makefile.
EDIT: si, en fait cela fonctionne, c'étaient les espaces que j'avais rajoutés qui pourrissaient la commande.
Merci :)
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
29 sept. 2013 à 11:44
29 sept. 2013 à 11:44
Je fais tout sous tty avec emacs.
https://stackoverflow.com/questions/8772488/emacs-word-wrap-at-specific-column-number
Je me retrouve cependant avec le problème de la lecture: c'est assez lourd.
Mais bon j'en serai sûrement réduit à ça.
Pas compris. En général découper en plein de petits fichiers (si ce découpage est logique) tend plutôt à améliorer la lisibilité.
EDIT: si, en fait cela fonctionne, c'étaient les espaces que j'avais rajoutés qui pourrissaient la commande.
Ok :)
Donc ton problème est résolu ?
https://stackoverflow.com/questions/8772488/emacs-word-wrap-at-specific-column-number
Je me retrouve cependant avec le problème de la lecture: c'est assez lourd.
Mais bon j'en serai sûrement réduit à ça.
Pas compris. En général découper en plein de petits fichiers (si ce découpage est logique) tend plutôt à améliorer la lisibilité.
EDIT: si, en fait cela fonctionne, c'étaient les espaces que j'avais rajoutés qui pourrissaient la commande.
Ok :)
Donc ton problème est résolu ?
28 sept. 2013 à 12:04
Je me posais justement la question pour ce problème de .o/.c.
L'intérêt est que pour nos études nous sommes soumis à une norme pour coder qui limite le nombre de fonctions par fichier, nous sommes donc obligés de faire plusieurs fichiers pour respecter ladite norme.
Ce n'est pas négociable.
Ceci dit l'idée des .a est sans doute la meilleure pour faire des bibliothèques j'aurais du y penser c'est vrai.
Je ne pense pas qu'il soit possible avec gcc de faire un unique .o avec plusieurs .c. l'option -c n'admet pas de nom de cible et est incompatible avec -o.
Ceci dit, j'ai toujours le problème de savoir utiliser les {} dans une arborescence, j'avais vu cette notation mais je ne parviens pas à la reproduire ou à en trouver une explication sur internet.
elle permet en principe d'utiliser plusieurs fichiers d'un dossier autre que le dossier courant sans avoir à retaper l'arborescence pour chaque fichier.