WPWMM4(1) - 具有Make and M4的網頁 - 生成靜態網頁
簡單使用make命令。 Makefile與FreeBSD和NetBSD的製造兼容。在Linux上應安裝Bmake軟件包。
使用WPWMM4可以從M4文件創建靜態網頁。生成是通過製造完成的。您可以使用外部腳本或命令。
您應該在目錄中創建一個config.mk文件,並在此文件中設置以下變量。當然,您可以在config.mk中使用。
common_dir : 00_defines.m4在哪裡。通常與makefile是相同的目錄。
include_dir :基於用戶包含M4的目錄。它相對於主要源目錄。
src_dir :此變量指向源文件(通常*.m4 )所在的源目錄。它可以包含子目錄。
Assets_dir :在此目錄中是靜態文件( * .css , * .js等)。
assets_dest_dir :靜態文件的目標目錄。如果您想在$ {dest_dir}內部,則應將其包括在此變量中。
ASSETS_CP :將復制$ {Assets_dir}的命令。默認值為@CP -R 。
dest_dir :編譯(創建)HTML的位置。 $ {src_dir}的子目錄樹是通過make創建的。
flag_dir :標誌所在的目錄。標誌是簡單的文件,這些文件存儲有關構建的信息。只有一個標誌: $ {flag_mkdir} ,它符合在$ {dest_dir}中創建目錄結構並存儲創建目錄列表的時間。您可以通過$ {MKDIR_REQ}添加plus依賴 - 因此可以在此文件更改後重新構建目錄結構。
layout_dir :這是佈局。
virt_dir :此目錄包含虛擬頁面的模板。
目標:靜態文件的空間分離列表(不包括虛擬頁面)應該創建什麼。不要包括$ {dest_dir},因為它包含在構建系統中。您當然可以使用目錄。它的自動要求是$ {src_dir}中的同一文件,將HTML擴展名替換為M4擴展名。
targets_manual :靜態文件的空間分離列表應該創建什麼。不要包括$ {dest_dir},因為它包含在構建系統中。這些目標沒有自動生成的要求,因為上述$ {targets} 。
Greq :全球要求。每個目標都需要它。默認值為空。
foo.html_req : foo.html的其他要求,該要求包含在$ {targets} actiable中(請參見上文)。 foo.m4自動添加。這些變量是可選的。
M4 : M4命令。在大多數情況下,可以簡單地設置為M4 (路徑)。該變量是可選的,默認值為M4
M4_Params : M4命令的參數。默認值是-p -i include -d_src_dir = $ {src_dir} 。請注意,選項-P是必要的,因為我們使用帶有M4_前綴的內置宏。
以下變量是在構建過程中動態創建的,您可以在M4源和模板中使用它們。
_directory : $ {dest_dir}內部的目標目錄(沒有$ {dest_dir}前綴)。 $ {dest_dir}的根是“”。 (點)。
_file :正在生成的目標文件名(無需任何擴展名)。
該系統運送一些您可以在文件中使用的幫助者。它們在00_Defines.m4中定義。這是幫助者清單:
_body(內容,選項) :生產<身體$ options> $ content </body> 。
_charset(charset) :生產<meta charset =“ $ charset”> 。
_class(class1,class2,...) : class class =“ $ class1 $ class2 ...” 。
_CSS(cssfile) :生產<link rel =“ stylesheet” href = $ cssfile> 。
_div(類,內容,選項) :生產<div class = $ class $ options> $ content </div> 。
_head(選項,內容) :生產<Head $ options> $ content </head> 。
_href(url,文本,選項,標題) :生產<a href = $ url $ options title = $ title> text> text </a> 。
_meta(參數) :生產<meta $參數> 。
_OL(參數) :生產有序列表<ol> <li> $ 1 </li> <li> $ 2 </li> ... </ol> 。您可以在參數列表中指定項目,並由逗號分隔。請小心引用!
_STAG(tagName,參數) :生產<$ tagName $ parameters> 。
_tag(tagName,content,options) :生產<$ tagName $ options> $ content </$ tagname> 。
_title(標題,選項) :生產<Title $ options> $ title </title> 。
_ul(參數) :與_ol相同。
虛擬頁面沒有源(M4)文件。當您想創建具有相似內容的類似頁面時(例如,列表圖像,...)很有用。
您應該創建虛擬組組(您只能向一個組添加一個虛擬)。您可以使用以下變量進行操作:
虛擬:包含類別的名稱。例如virtuals = cat1 cat2 。類別被空間特徵分開。
VirtualTemplate_* :您可以設置(遵循上面的示例) VirtualTemplate_cat1和VirtualTemplate_CAT2變量。他們的價值說明哪個模板應用於生成虛擬頁面。模板存儲在virt_dir目錄中。在模板文件中,您可以使用動態創建的變量,請參見[源內部的變量] []下面的部分。
VirtualDir_* :此變量指向應在其中出現生成頁面的目標目錄。您必須設置每個類別,因此您也必須設置VirtualDir_Cat1和VirtualDir_Cat2 。
VirtualOut_* :輸出文件名。例如virtual_cat1 = foo1.html foo2.html 。在這種情況下,您將擁有$ {virtualdir_cat1}/foo1.html和$ {virtualdir_cat1}/foo2.html 。
VirtualReq_* :虛擬類別的其他要求。 $ {virtualTemplate _*}。m4自動添加。
VirtualReqrule_* :一個簡單的轉換規則,用於定義文件的要求。轉換規則應用於$ {virtualout_*}變量的元素。例如, virtualreq_foo = c,.html,.dat,規則將將每個.html擴展名轉換為.dat擴展名: $ {destdir}/foodir/bar.html將取決於foodir/bar.dat文件。請注意,** $ {virtualdir_*}的值不包括自動包含,因此,如果您願意,您應該這樣做!請注意遞歸依賴性!請參閱《製造》(1)手冊中可能的修飾符!
您可以定義在指定事件下運行的掛鉤。您可以在定義中使用$ {。target}宏,因為在需要時製造會擴展此變量(而不是定義)。如果您不想查看,則命令應以@ sign前綴為前綴。
Hook_pre_html :它在從M4文件生成HTML文件之前運行。默認值為$ {msg1}構建$ {。target} 。
Hook_post_html :它在從M4文件生成HTML文件後運行。默認值為空。例如,如果要檢查HTML文件的有效性(例如,請參見http://www.html-tidy.org/)。
Hook_pre_vhtml :它在從虛擬模板中生成HTML文件之前運行(請參見上面的[Virtuals] [])。默認值為$ {msg1}構建虛擬$ {。target} 。
Hook_post_vhtml :它在從虛擬模板中生成HTML文件後運行。默認值為空。
您可以在** config.mk'中定義一些特殊目標。
預期:此目標將在任何其他目標之前執行(當然清潔除外)。例如,您可以運行一個創建某些文件的腳本,甚至可以在WPWMM4中使用的文件。使用此目標可以模擬標籤功能(使用[Virtuals] []功能)。另一個想法會自動生成$ {targets}變量(帶有查找命令)。
清潔操作:當您運行乾淨的目標時(將所有內容刪除$ {dest_dir}目錄)也將運行。
有一些特殊的目標可以幫助您調試您的配置。
show-config :顯示主要變量。
表演鉤:展示鉤子。
展示目標:顯示目標(包括虛擬目標)。
Show-Req :顯示目標的要求。目標是在沒有任何空格的情況下開始的,這些要求由兩個空間前綴。在最新要求和下一個目標之間是插入空線。
示威活動:此目標將顯示定義的虛擬及其配置。
您可以在M4文件中使用和設置一些變量。
有一些命令可以提供幫助。它們在00_Defines.m4中定義。這是列表:
_script(命令) :執行$命令並粘貼其輸出(也是STDOUT和STDERR )。它使用M4的ESYSCMD宏。
_layout(佈局,varname1,var1,varname2,var2,...) :加載$佈局佈局。它使用M4的宏。您可以在源文件的開頭定義網頁佈局。此命令將分配變量varname1 , varname2 ,...帶值var1 , var2 。
_layout_pre(pre) : $ pre是在隨附的內容之前打印的。
_layout_post(post) : $ post在隨附的內容之後打印。
_incl(文件) :包括$文件。轉移為-1,因此該宏不會產生任何輸出。這是加載帶有宏定義的文件的理想選擇。
_2_body(文本) : $文本將進入身體標籤。該宏收集所有輸入,沒有打印任何東西。使用_pr_body可以打印(並清除)內容。
_2_head(text) :與_2_body相同,但收集到頭標籤中。
_pr_body :打印並重置_2_body收集的內容。這是一個簡單的Undivert宏。
_pr_head :與_pr_body相似。
_pr_all :它打印<!doctype html> <html lang =“ lang”> ,調用_pr_head和_pr_body ,然後關閉HTML標籤。
config.mk
一個生成的例子是我的個人主頁(在匈牙利語):http://uzsolt.hu/及其源文件及其源文件位於https://svn.uzsolt.hu/uzsolt.hu/uzsolt.hu/ wpwmm4-4-4-uzsolt.hu/ and github mirror :https://github.com/uzsolt/wpwmm4-uzsolt.hu。
這是一個簡單的複雜示例,但它演示了WPWMM4的力量:)
M4(1),Make(1)
Zsolt Udvari([email protected],www.uzsolt.hu)