使用多个可组合的 makefile 目标
Using multiple and combinable makefile targets
我有一个包含至少两个选项的 Latex 项目:printable
( 将可点击的 link 放在脚注上)和 monochrome
( 将黑色的羊毛文件)。此选项可以作为单个选项使用,也可以同时使用(如果我想要一个脚注中带有 links 的单色文档)。
所以,这是我的 makefile 的框架:
printable:
${TEX} -jobname=${NAME} "\def\isprintable{1} \input{main.tex}"
monochrome:
${TEX} -jobname=${NAME} "\def\ismonochrome{1} \input{main.tex}"
此代码只允许我获取可打印格式 X 的文档或单色文档。但不能同时两次。
我尝试了目标 printable monochrome:
但在这种情况下,我总是得到一个可打印的单色文档,当我仅使用 printable
或 monochrome
目标调用 make 时也是如此。我无法获得唯一的单色文档或唯一的可打印文档。
那么,是否可以在 makefile 的目标之前创建一个 ifthen 结构,以便在执行之前评估粘贴到 make 的目标?
类似于:
if targets contain monochrome
then: ARG=${ARG} "\def\ismonochrome{1}"
if tragets contain printable
then: ARG=${ARG} "\def\isprintable{1}"
${TEX} -jobname=${NAME} "${ARG} \input{main.tex}"
是否可以使用 makefile 执行此操作,或者我必须开发其他方法?
ifdef MONOCHROME
ARGS += \def\ismonochrome{1}
endif
ifdef PRINTABLE
ARGS += \def\isprintable{1}
endif
project:
${TEX} -jobname=${NAME} \"$(ARGS)\"
您可以调用它,例如
make MONOCHROME=true PRINTABLE=yes
请注意,某些 "escaping" 可能需要处理双引号、反斜杠和其他特殊字符;这可能需要对您的系统进行一些微调。
我有一个包含至少两个选项的 Latex 项目:printable
( 将可点击的 link 放在脚注上)和 monochrome
( 将黑色的羊毛文件)。此选项可以作为单个选项使用,也可以同时使用(如果我想要一个脚注中带有 links 的单色文档)。
所以,这是我的 makefile 的框架:
printable:
${TEX} -jobname=${NAME} "\def\isprintable{1} \input{main.tex}"
monochrome:
${TEX} -jobname=${NAME} "\def\ismonochrome{1} \input{main.tex}"
此代码只允许我获取可打印格式 X 的文档或单色文档。但不能同时两次。
我尝试了目标 printable monochrome:
但在这种情况下,我总是得到一个可打印的单色文档,当我仅使用 printable
或 monochrome
目标调用 make 时也是如此。我无法获得唯一的单色文档或唯一的可打印文档。
那么,是否可以在 makefile 的目标之前创建一个 ifthen 结构,以便在执行之前评估粘贴到 make 的目标?
类似于:
if targets contain monochrome
then: ARG=${ARG} "\def\ismonochrome{1}"
if tragets contain printable
then: ARG=${ARG} "\def\isprintable{1}"
${TEX} -jobname=${NAME} "${ARG} \input{main.tex}"
是否可以使用 makefile 执行此操作,或者我必须开发其他方法?
ifdef MONOCHROME
ARGS += \def\ismonochrome{1}
endif
ifdef PRINTABLE
ARGS += \def\isprintable{1}
endif
project:
${TEX} -jobname=${NAME} \"$(ARGS)\"
您可以调用它,例如
make MONOCHROME=true PRINTABLE=yes
请注意,某些 "escaping" 可能需要处理双引号、反斜杠和其他特殊字符;这可能需要对您的系统进行一些微调。