Что на самом деле делает dmake при установке нового модуля?

Мне только что удалось установить модуль perl / Tk после долгих усилий. Я понимаю, что не понимаю, что на самом деле делает dmake, make и т. Д.

Я использую клубничный Perl, установленный в C: \ клубника.

Во-первых, я распаковал модуль в другой каталог и запустил perl makefile.pl, который работал нормально. Затем я попробовал dmake, который не сработал. Думаю, это будет очевидно для людей, которые знают, как это работает.

Когда я поместил модуль в подкаталог C: \ Strawberry, я мог запустить perl makefile.pl, dmake, dmake test и dmake install.

Я предполагаю, что dmake install добавляет некоторые исполняемые файлы в интерпретатор, и для работы модуль должен находиться в подкаталоге. Есть ли где-нибудь статья, в которой подробно объясняется, что он делает?


person AJ Dhaliwal    schedule 05.05.2010    source источник
comment
Ой! Кажется, окольные пути, но что конкретно вам нужно было сделать, чтобы установить Tk на Strawberry Perl?   -  person Robert P    schedule 06.05.2010
comment
Кроме того, какую версию SP и Perl вы использовали?   -  person Robert P    schedule 06.05.2010
comment
ActiveState Perl, вероятно, лучший дистрибутив Perl для Windows. Они также активно развивают TCL / Tk, поэтому готов поспорить, что интеграция с tk намного лучше.   -  person Byron Whitlock    schedule 06.05.2010
comment
Я думал об использовании ActiveState, но тогда я не был уверен, что то, что я написал раньше, сломается. Также клубника имеет открытый исходный код, а ActiveState - нет. по какой-то причине кажется важным. Strawberry Perl 5.10.0.6 Perl версии 5.10.0. Я загрузил модуль с search.cpan.org/~srezic/Tk -804.028 / pod / UserGuide.pod распаковал его в C: \ клубничный. Открыл командную строку, сменил каталог на модуль. запустил perl makefile.pl, dmake, dmake test, а затем dmake install. Кажется, сработало.   -  person AJ Dhaliwal    schedule 06.05.2010
comment
Здесь даже есть цитата Ларри ... Strawberryperl.com. Конечно, это должно решить эту проблему.   -  person AJ Dhaliwal    schedule 06.05.2010
comment
Спасибо за информацию о версии. Обратите внимание, что основная причина использовать Strawberry Perl вместо ActiveState Perl заключается в том, что модульная система CPAN (по большей части) действительно работает. Многие модули не существуют в репозитории PPM ActiveState, либо устарели, либо (по той или иной причине) не хотят обновляться. Tk - один из самых разочаровывающих, потому что он не обновлялся годами, и большая часть разработки GUI на уровне Perl была перенесена на другие инструменты, такие как Wx.   -  person Robert P    schedule 06.05.2010
comment
Так что, скорее всего, если бы вы установили Perl с помощью установщика .msi, вы могли бы перейти в командную строку и ввести cpan, а затем ввести install Tk, и это сработало бы для вас. :) Моя проблема связана с тем, что я не могу использовать установщик .msi. :(   -  person Robert P    schedule 06.05.2010
comment
Спасибо, Роберт. Я попробовал ppm, но ничего не вышло. Думаю, я мог бы / должен попробовать cpan в следующий раз. Я установил perl так много месяцев назад, что не могу вспомнить, какой установщик использовал.   -  person AJ Dhaliwal    schedule 06.05.2010


Ответы (2)


Когда вы видите файл Makefile.PL, это означает, что это модуль, система установки которого - ExtUtils :: MakeMaker.

EU :: MM - это классическая система для установки модулей Perl, восходящая к заре CPAN. Он основывался на том факте, что программа _1 _ - распространенный и мощный инструмент отслеживания зависимостей - была доступна почти в каждой системе unix, а также полагалась на всевозможные шаблоны и модели поведения unixy.

Makefile.PL - это сценарий Perl, поддерживаемый автором модуля. Он считывает информацию о вашей системе из самого Perl и использует ее для создания Makefile. Этот Makefile указывает make действия, которые необходимо выполнить. Для получения дополнительной информации о make посетите страницу в Википедии о Make. По сути, make смотрит на правила, которые говорят ему, какие файлы «создавать». Он рекурсивно просматривает все правила для создания «цели» (например, когда вы набираете make install, цель была «install»), а затем следует им, пока (а) не достигнет цели или (б) не взорвется ужасно. Мы все надеемся на (а), но (б) также часто бывает. :)

К сожалению, в Windows-land у нас нет make. Или компилятор. Во всяком случае, обычно.

dmake - это make программа, которая неплохо работает в Windows. Strawberry Perl объединяет все, что вам нужно для создания unix-подобной среды в Windows, в удобный пакет, делая то, что вы только что сделали, на самом деле возможным.

person Robert P    schedule 06.05.2010

Возможно, вы понимаете ваш вопрос слишком буквально, но dmake имеет параметр -v (для подробного)

dmake -v

dmake -v target

который будет отображать информацию о том, что именно dmake делает во время установки.

person mob    schedule 06.05.2010
comment
Думаю, я сделаю это в следующий раз, но на данном этапе искал объяснение более высокого уровня. - person AJ Dhaliwal; 06.05.2010