Re: bash
От: yeti Россия  
Дата: 03.12.04 10:40
Оценка: 7 (2)
Здравствуйте, <Аноним>, Вы писали:

А>Привет.Надо поправить Makefile,а я совсем не шарю в бэше.


Ну во первых bash тут не при чём — makefile-ы обрабатываются утилитой make а не bash

По сути: вот пример makefile-а, демонстрирующий применение регулярных выражений — вроде как здесь всё что может вам понадобиться (`man make` рулит)
# это "подопытная" переменная; здась мы инициализируем её если не была задана
X ?= a=10 b=20 c=30

# трюк номер раз: удаляем лишнее - в этом примере "a=???"
X := ${X:C/a=.*//}

# трюк номер два: добавляем нечто новое
X += d=40

# трюк номер три: модифицируем формат "b=???" --> "B_???"
X := ${X:C/b=(.*)/B_\1/}

# выводим результат этих извращений
demo:
        @echo ${X}


Если я неправильно понял вопрос — извиняйте и уточняйте
... << RSDN@Home 1.1.4 beta 3 >>
bash
От: Аноним  
Дата: 02.12.04 20:30
Оценка: :)
Привет.Надо поправить Makefile,а я совсем не шарю в бэше.

Есть рекурсивная схема Makefile.
Из верхнего уровня в нижний передаётся следующая переменная
CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DFIELD_DEGREE=191 -DSIGN_LENGHT=512 -DMAX_HASH_LENGHT=256

В этом мейкфайле должны быть вытащенны из переменной CFLAG значения -DFIELD_DEGREE=191 -DSIGN_LENGHT=512 -DMAX_HASH_LENGHT=256 и преобразованы к виду
-dFIELD_DEGREE_173 -dSIGN_LENGHT_352 -dMAX_HASH_LENGHT_256
и добавлены к переменной CFLAGS.
DIR = dstuso
TOP = ..
FPC = fpc
CFLAGS = -Sd -CD -Rintel -dFIELD_DEGREE_173 -dSIGN_LENGHT_352 -dMAX_HASH_LENGHT_256
MAKE = make -f Makefile.ssl
SHARED_LIB = libdstu_ecc.so
LIBSRC = dstu_ecc.pas
all:shared
lib:$(LIBSRC)
$(FPC) $(CFLAGS) $<
cp $(SHARED_LIB) $(TOP)
Каким образом это можна сделать?
Спасибо за помощь.
для gnu make
От: yeti Россия  
Дата: 03.12.04 11:06
Оценка:
если вы используете GNU Make то надо кое-что изменить:
# трюк номер раз: удаляем лишнее - в этом примере "a=???"
X := $(patsubst a=%, , $(X))


# трюк номер три: модифицируем формат "b=???" --> "B_???"
X := $(patsubst b=%, B_%, $(X))
... << RSDN@Home 1.1.4 beta 3 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.