Цель переопределения в make-файле для добавления большего количества команд?

Единственный, который работал на меня.

http://sourceforge.net/apps/trac/syncmldotnet/wiki/Quoted%20Printable

Если вам просто нужно декодировать QP, потяните в свой код эти три функции по ссылке выше:

    HexDecoderEvaluator(Match m)
    HexDecoder(string line)
    Decode(string encodedText)

А потом просто:

var humanReadable = Decode(myQPString);

Наслаждайтесь

41
задан Paul D. 29 October 2009 в 16:24
поделиться

3 ответа

Вы можете написать свою собственную чистую и сделать ее пререквизитом общей чистки.

clean: myclean

myclean:
    rm whatever

Ваша будет работать первой. Если по какой-то причине вы хотите, чтобы сначала выполнялась обычная очистка, решение будет более сложным.

РЕДАКТИРОВАТЬ:

Вот лучшее решение, которое я вижу, которое выполняет общее правило перед локальным:

include Makefile.common

clean:
    $(MAKE) -f Makefile.common $@
    rm whatever additional things

Директива include необходима, поскольку локальный make-файл полагается на общую директиву для других вещей, кроме clean . Локальное правило clean отменяет общее правило clean , но вызывает общее правило clean перед выполнением дополнительной работы. (Это переопределение вызовет некоторые предупреждения, что является неприятностью; я не знаю, как их заставить замолчать.)

34
ответ дан 27 November 2019 в 00:16
поделиться

Похоже, правило общего make-файла должно называться как-то вроде common-clean . Затем каждый основной make-файл объявляет свое чистое правило как

clean: common-clean

, и все готово.

Если это не вариант, вы можете взглянуть на правила двойного двоеточия , но они вводят целый ряд других вопросов, которые необходимо рассмотреть.

5
ответ дан 27 November 2019 в 00:16
поделиться

Я видел это в нескольких магазинах. Наиболее распространенный подход - использовать правила с двойным двоеточием, если вы используете что-то вроде GNU make. В вашем общем make-файле у вас будет что-то вроде этого:

clean::
        # standard cleanup, like remove all .o's:
        rm -f *.o

Обратите внимание, что за clean идут два двоеточия, а не только один!

В другом вашем файле makefile вы снова просто объявляете clean как правило с двумя двоеточиями:

clean::
        # custom cleanup, like remove my special generated files:
        rm -f *.h.gen

Когда вы вызываете make clean , GNU make автоматически запускает оба из них » ветки »правила очистки:

% make clean
rm -f *.o
rm -f *.h.gen

Я думаю, он прост в настройке и довольно аккуратно составляет. Обратите внимание, что именно потому, что это правило с двумя двоеточиями, вы не получаете ошибок «переопределения команд», которые обычно возникают при определении двух правил для одной и той же цели. Который'

65
ответ дан 27 November 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: