使用多个可组合的makefile目标

时间:2015-04-02 01:24:01

标签: makefile targets

我有一个包含至少两个选项的乳胶项目:printable(在脚注上添加可点击链接)和monochrome(将羊毛文件放在黑色上)。这个选项可以作为单个选项使用,也可以同时使用(如果我想要一个带脚注的单色文档)。

所以,这是我的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结构来评估在执行之前粘贴的目标?

类似的东西:

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执行此操作,或者我必须以另一种方式开发?

1 个答案:

答案 0 :(得分:0)

ifdef MONOCHROME
ARGS += \\def\\ismonochrome{1}
endif

ifdef PRINTABLE
ARGS += \\def\\isprintable{1}
endif

project:
    ${TEX} -jobname=${NAME} \"$(ARGS)\"

你可以用例如

来调用它
make MONOCHROME=true PRINTABLE=yes

请注意,处理双引号,反斜杠和其他特殊字符可能需要一些“转义”;这可能需要对您的系统进行一些微调。