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)