2010-08-17 2 views
1

J'essaye de développer un programme qui emploie une autre bibliothèque interne faite dans le même projet.automake pour créer une lib et un programme l'utilisant

Je veux lier les deux. La lib est stockée et compilée avec succès sous ./lib/mylib et un mylib.a est créé. Le problème est que je dois inclure le répertoire ./lib/mylib dans la recherche INCLUDE et aussi lier le programme à la bibliothèque.

Y a-t-il des variables définies automatiquement ou dois-je le faire par mes propres moyens dans le Makefile.am ci-dessous?

SUBDIRS = lib . 

# set the include path found by configure 
INCLUDES = $(all_includes) -Ilib/mylib 

bin_PROGRAMS = myprogram 

myprogram_SOURCES = main.c 
myprogram_CPPFLAGS = $(libmylib_CFLAGS) $(AM_CFLAGS) $(CFLAGS) 
nfc_network_config_LDADD =$(LIB_MYLIB) 

Répondre

2

Votre Makefile pourrait ressembler à ceci.

SUBDIRS = lib . 
bin_PROGRAMS = myprogram 
myprogram_SOURCES = main.c 
myprogram_CPPFLAGS = -Ilib/mylib $(AM_CPPFLAGS) 
myprogram_LDADD = lib/mylib/mylib.a 

Notez que *_CPPFLAGS doit généralement pas être mélangé avec *_CFLAGS, et que les variables $(CFLAGS) et $(CPPFLAGS) sont toujours utilisés (ils sont variables utilisateur) de sorte que vous ne devriez pas avoir à les mentionner. De plus, INCLUDES est une variable obsolète (vous devez utiliser *_CPPFLAGS à la place), et automake vous en avertira si vous l'exécutez avec l'option -Wall.

+0

mais AM_CPPFLAGS n'est pas compatible si vous utilisez AM_PROG_CC_C_O. Ou est-il obsolète? – jlanza

+0

Pourquoi voulez-vous dire avec non compatible? J'utilise subdir-objects et AM_CPPFLAGS dans tous mes projets. – adl

Questions connexes