2015-02-23 48 views
2

我正在使用ExtUtils :: MakeMaker來打包我的perl模塊,但我不想讓makefile在系統上的任何位置複製文件。 我需要禁用「安裝」目標,而是告訴用戶,當他輸入「make install」時,此makefile只支持「make dist」。如何禁用perl MakeMaker模塊的make目標?

+1

只是好奇:爲什麼不能讓用戶運行'使install'如果他們想?否則,他們將如何使用你生產的模塊? – 2015-02-23 21:21:12

+0

由於應用程序依賴於多個系統管理選項,例如「我要使用哪個數據庫後端」等,只是將模塊複製到系統上的任何目錄都沒有意義。我只是提供Makefile.PL作爲Linux發行版模塊打包器的幫助模塊。 – 2015-02-23 21:29:47

回答

1

Makefile.PL文件中定義MY::install

sub MY::install { 
    "install ::\n\techo You should run \\'make dist\\', not \\'make install\\'" 
} 

函數應該返回要用於替換的Makefile的install部分的文本。

你可以做make install的代名詞make dist有:

sub MY::install [ "install :: dist\n" } 

文件:Overriding MakeMaker methods

+0

你的答案的一個稍微更新的版本正是我正在尋找的:'sub MY :: install {\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 「 } '謝謝 – 2015-02-23 21:44:29

+0

我只是建議在'WriteMakefile'結構中放置'PREFIX =>'/ dev/null'。你可以運行'make install',但它不起作用。很高興知道你實際上可以自己覆蓋目標。 – 2015-02-23 21:47:24