You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile条件语句使用错误,如何实现双语简历编译?

Makefile编译双语简历的正确实现方式

一、错误原因分析

你原来的写法把Makefile的条件判断语法ifeq放在了规则的命令块(缩进部分)里,这部分是shell命令执行区域,Makefile会将ifeq当作shell命令去执行,自然无法正确解析。正确的条件判断应该放在全局非缩进的位置,用来赋值Makefile变量。

二、两种实现方案

方案1:命令行指定语言生成单份简历

通过命令行传入LANG参数,指定生成德语或英语简历,默认生成德语版本:

# 默认语言,可通过命令行覆盖(如 make LANG=EN)
LANG ?= DE

# 全局条件判断赋值目标文件路径
ifeq ($(LANG), DE)
FILE = ./directory/resume_de
else ifeq ($(LANG), EN)
FILE = ./directory/resume_en
else
$(error LANG参数错误,请使用DE或EN)
endif

# 定义pdflatex命令,可按需替换
PDFLATEX ?= pdflatex

# 默认目标:生成对应语言PDF并执行移动操作
all: $(FILE).pdf move

# 编译tex到pdf的规则
$(FILE).pdf: $(FILE).tex
	latexmk -pdf -pdflatex=$(PDFLATEX) -f -use-make $<

# 移动文件的规则(按需补充具体命令)
move:
	# 示例:mv $(FILE).pdf ./output/

用法:

  • 生成德语简历:make 或 make LANG=DE
  • 生成英语简历:make LANG=EN
  • 若传入错误的LANG值,Makefile会直接抛出错误终止执行。

方案2:单条命令生成双语简历

无需指定语言参数,一次编译生成德语和英语两份简历:

# 定义pdflatex命令,可按需替换
PDFLATEX ?= pdflatex

# 两种语言的简历文件路径
DE_FILE = ./directory/resume_de
EN_FILE = ./directory/resume_en

# 默认目标:同时生成两份PDF并执行移动操作
all: $(DE_FILE).pdf $(EN_FILE).pdf move

# 通用编译规则:匹配所有.tex文件生成对应的.pdf
%.pdf: %.tex
	latexmk -pdf -pdflatex=$(PDFLATEX) -f -use-make $<

# 移动文件的规则(按需补充具体命令)
move:
	# 示例:mv $(DE_FILE).pdf $(EN_FILE).pdf ./output/

用法:
直接执行make all,即可一次性编译生成德语和英语的简历PDF。

内容的提问来源于stack exchange,提问作者Violet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:45:04