есть makefile
SRC = p1/a.c p2/b.c p3/c.cpp d.cpp p4/e.c p5/f.c p6/g.cpp
нужно собрать переменноую OBJ чтобы каждому исходному файлу
соответствовал .o в том же каталоге
OBJ1 = $(SRC:%.c=%.o)
OBJ = $(OBJ1:%.cpp=%.o)
так работает, но с использованием временной переменной
OBJ = $($(SRC:%c=%.o):%.cpp=%.o)
а так не работает
как красиво сделать без промежуточных переменных и шелла?
... Мы хлещем в жару портвейн! Мы не греем пива зимой!
15 Jan 08 , 17:57 Dmitry E. Oboukhov писал к All:
DEO> есть makefile
DEO> SRC = p1/a.c p2/b.c p3/c.cpp d.cpp p4/e.c p5/f.c p6/g.cpp
DEO> нужно собрать переменноую OBJ чтобы каждому исходному файлу
DEO> соответствовал .o в том же каталоге
DEO> OBJ1 = $(SRC:%.c=%.o)
DEO> OBJ = $(OBJ1:%.cpp=%.o)
DEO> так работает, но с использованием временной переменной
DEO> OBJ = $($(SRC:%c=%.o):%.cpp=%.o)
DEO> а так не работает
DEO> как красиво сделать без промежуточных переменных и шелла?
если мне склероз не изменяет,
OBJ = $(patsubst src/ out/ $(patsubst .c .o $(wildcard src/*.cpp)))
Под рукой примера нет, так что возможны опечитки, неправильный регистр и замены
запятых на пробелы.
. С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Press Shift + Reset to continue
Красиво - это примерно так ;) Hе изобретая очередных велосипедов.
-----------------------------------------------------
PREFIX?=/usr/local
BINDIR?=${PREFIX}/bin
MANDIR?=${PREFIX}/man
PROG= yourprog
SRCS= a.c b.c c.c d.c
.include <bsd.prog.mk>
-----------------------------------------------------
Вот и весь твой Makefile. Он уже умеет all, install, clean и так
далее, и, в отличие от 99% самопала, все делает правильно.
gnu make и идиотский automake в топку. Hужен pmake или make любой(?) *BSD.
--
Best regards, Aleksey Cheusov.
AC> Красиво - это примерно так ;) Hе изобретая очередных велосипедов.
AC> -----------------------------------------------------
AC> PREFIX?=/usr/local
AC> BINDIR?=${PREFIX}/bin
AC> MANDIR?=${PREFIX}/man
AC> PROG= yourprog
AC> SRCS= a.c b.c c.c d.c
AC> .include <bsd.prog.mk>
AC> -----------------------------------------------------
AC> Вот и весь твой Makefile. Он уже умеет all, install, clean и так
AC> далее, и, в отличие от 99% самопала, все делает правильно.
AC> gnu make и идиотский automake в топку. Hужен pmake или make любой(?) *BSD.
ну если бы я прогу писал то я бы так и сделал :)
но тут вообще код чужой
и выглядит он примерно так:
SRC = список файлов на два экрана \
сишных и иногда \
встречающихся сиплюсплюсных
OBJ = список объектных файлов \
соответсвующих SRC
ну и в SRC включено кой что лишнего
я это лишнее удалил просто (зависимости) а приводить в соответствие
SRC->OBJ стало лениво, я соответственно топиковым способом привел все
удалив и собрал пакет с зависимостями.
а автора апстреама еще надо убедить что надо систему сборки переписать
а она у него под вендулет, линукс, и еще что-то
нафиг? чуток пропатчил для себя и забил (патч автору сплавил а пусть он
там уж решает нужен ему или нет)
... Linux is like a wigwam - no windows, no gates, apache inside...