[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Gmake: Implicit rule for archives and variable as prerequisit
From: |
Pascal MALAISE |
Subject: |
Gmake: Implicit rule for archives and variable as prerequisit |
Date: |
Thu, 07 Apr 2005 22:28:13 +0200 |
User-agent: |
Mozilla Thunderbird 0.8 (X11/20041012) |
Hi,
I am using a "generic" makefile defining implicit rules so that it can
be included by several makefiles in several directories.
I have a problem for generating archives (.a and .so).
Here is the makefile in the target dir. The idea is to define the list
of archives and, for each archive, the list of objects to store in it.
------------------------------------------
# Example of makefile
LIBS := lib
OBJS_lib := test.o
include c.mk
-------------------------------------------
# Generic makefile for use in several projects
# c.mk
.SUFFIXES : .c .o .a
.PHONY : all
ALIBS := $(LIBS:%=%.a)
%.o : %.c
touch $@
%.a :
ar crvs $@ $(OBJS_$(@F:%.a=%))
all : $(ALIBS)
---------------------------------------------
This can be tested after creating a dummy test.c, then calling make
ar crvs lib.a test.o
ar: test.o: No such file or directory
The only solution I have found is to append (after the include) in each
makefile:
lib.a : $(OBJS_lib)
Then, "make" knows that for lib.a and %.a implicit rule, test_x.o is a
prerequisit.
I would like to move this explicit definition that "lib.a" needs
$(OBJS_lib), in the implicit part of the scheme.
I have tried %.a : $(OBJS_$(@F:%.a=%)) in the implicit rule but this
does not work because: "Note that expansion using `%' in pattern rules
occurs after any variable or function expansions", so @F expands
probably to "%a".
Is there a nice way to write an implicite rule for an archive, using a
variable for defining the list of prerequisits?
Or is there a different way (using archive features from ยง11) to solve
this problem?
Thank's in advance
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Gmake: Implicit rule for archives and variable as prerequisit,
Pascal MALAISE <=