# \[automake\] \<prog\>\_LIBS et \<prog\>\_CFLAGS pas pris en compte

**URL:** <https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784 "2016-02-20T21:11:37Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/1 "2016-02-20T21:11:37Z")

</div>

Bonjour à tous,

J’ai un petit problème avec automake/autoconf,  
et je me disais qu’il devait bien y avoir quelques devs chevronnés sur le forum qui ont eu le même problème que moi 😉

J’ai commencé à écrire un petit programme (simpled) en C++ dont le but est de manipuler le C++, gtkmm et autoconf.  
Les choses se passent assez bien jusqu’au moment où j’ai besoin d’avoir les headers et les libs de gtkmm.  
Je met un PKG\_CHECK\_MODULES([simpled], [gtkmm-2.4 \>= 2.8 libglademm-2.4 \>= 2.6]) dans le [configure.ac](http://configure.ac),  
je refait tourner automake qui me crée bien les variables simpled\_LIBS et simpled\_CFLAGS dans [Makefile.in](http://Makefile.in). Mais ces variables ne sont jamais utilisées !

Pour corriger ça j’ai mis les lignes suivantes dans le [Makefile.in](http://Makefile.in) :

`simpled$(EXEEXT): LIBS += $(simpled_LIBS)
$(simpled_OBJECTS): CXXFLAGS += $(simpled_CFLAGS)`

Mais je sens bien que rajouter ça à la main n’est pas la méthode “officielle”,  
je pense que ça devrait être mis en place par automake,  
aussi si quelqu’un sait quelle est la manière de “bien” faire, je suis preneur 😃.

Pour info, voilà le contenu de quelques fichiers clés :  
[configure.ac](http://configure.ac)

[code]# -_- Autoconf -_-

# Process this file with autoconf to produce a configure script.

AC\_PREREQ(2.61)  
AC\_INIT([BBTs Simple Editor], [0.1], [bXbXtX@gmail.com], [simpled])  
#AM\_INIT\_AUTOMAKE([-Wall -Werror foreign])  
#AM\_MAINTAINER\_MODE  
AM\_INIT\_AUTOMAKE([hello], [1.0])  
AC\_CONFIG\_SRCDIR([src/simpled.cc])  
AC\_CONFIG\_HEADER([config.h])  
AC\_CONFIG\_FILES([  
Makefile  
src/Makefile  
])

# Checks for programs.

AC\_PROG\_CXX

# Checks for libraries.

PKG\_CHECK\_MODULES([simpled],  
[gtkmm-2.4 \>= 2.8 libglademm-2.4 \>= 2.6])

# Checks for header files.

AC\_HEADER\_STDC  
AC\_CHECK\_HEADERS([stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC\_OUTPUT[/code]  
[Makefile.am](http://Makefile.am)

`SUBDIRS = src
dist_doc_DATA = README`  
src/Makefile.am

`bin_PROGRAMS = simpled
simpled_SOURCES = simpled.cc`

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/2 "2016-02-20T21:11:38Z")

</div>

Pour info j’utilise autoconf 2.61-8 et automake 1:1.10.1-3.

---

<div class="post-metadata">

**Author:** ![lann](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/a5b964/32.png) [@lann](https://www.debian-fr.org/u/lann)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/3 "2016-02-20T21:11:42Z")

</div>

Bonsoir

Ce ne serait pas cette ligne avec le programme hello, la source d’erreur

> [@](#):
>
> AM\_INIT\_AUTOMAKE([hello], [1.0])

ça pourrait fonctionner avec ça

```auto
AM_INIT_AUTOMAKE([simpled], [1.0])
```

sinon garde la ligne par défaut

```auto
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
```

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/4 "2016-02-20T21:11:45Z")

</div>

Merci de ta réponse Iann.

Bien vu pour le hello, j’ai corrigé 🙂.  
J’ai aussi testé la ligne du AM\_INIT\_AUTOMAKE que tu proposais,  
mais aucune des deux solution ne change quoi que ce soit.

Je vais sûrement essayer de trouver un package à décortiquer pour avoir sous les yeux un exemple qui marche ce week-end, mais toute suggestion est la bienvenue 😉

---

<div class="post-metadata">

**Author:** ![lann](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/a5b964/32.png) [@lann](https://www.debian-fr.org/u/lann)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/5 "2016-02-20T21:11:52Z")

</div>

et si tu mets ça dans le src/Makefile.am ?

`
bin_PROGRAMS = simpled
simpled_SOURCES = simpled.cc
simpled_LDADD = $(simpled_LIBS)
AM_CPPFLAGS = $(simpled_CFLAGS)
simpled_CXXFLAGS= -s`

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/6 "2016-02-20T21:11:53Z")

</div>

Merci Iann ta solution est bien plus propre que la mienne,  
je peux regénérer le configure et autre [Makefile.in](http://Makefile.in) sans soucis maintenant

merci 🙂

Je vais quand même fouiller un peu pour voir si il n’y a pas des directives plus explicite avec automake que de forwarder les flags comme ça (et puis du coup tout les fichiers objets compilés auront les CFLAGS de simpled, mais bon, là ça devient du détail)

---

<div class="post-metadata">

**Author:** ![lann](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/a5b964/32.png) [@lann](https://www.debian-fr.org/u/lann)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/7 "2016-02-20T21:11:56Z")

</div>

Tiens moi au courant si tu trouves quelque chose de mieux

C’est toujours un peu la galère les autotools mais une fois en place c’est génial

A+

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 9:11 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/8 "2016-02-20T21:11:56Z")

</div>

OK, je posterai mes trouvailles dans ce topic 😉

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 20, 2016, 9:12 UTC](https://www.debian-fr.org/t/automake-prog--libs-et-prog--cflags-pas-pris-en-compte/23784/9 "2016-02-20T21:12:01Z")

</div>

Visiblement on peut mettre des règles de Makefile directement dans le Makefile.am,  
donc pour que les CFLAGS de simpled ne soient appliqués que sur simpled  
ça donne ça :  
src/Makefile.am

[code]bin\_PROGRAMS = simpled  
simpled\_SOURCES = simpled.cc hello.cc hello.hh  
simpled\_LDADD = $(simpled\_LIBS)

$(simpled\_OBJECTS): AM\_CPPFLAGS += $(simpled\_CFLAGS)[/code]

@Iann J’ai regardé quelques packages et c’est quasiment toujours fait de la manière que tu proposes. Je vais regarder les directives valides de automake plus en détail, mais je commence à croire qu’automake ne me fera pas le café, faut le faire soit même ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

Oh, et quelqu’un sait si mettre la construction ": = " est portable ?
