使用多个可组合的 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: 但在这种情况下,我总是得到一个可打印的单色文档,当我仅使用 printablemonochrome 目标调用 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" 可能需要处理双引号、反斜杠和其他特殊字符;这可能需要对您的系统进行一些微调。