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

在Makefile中判断操作系统生成.exe时出错,如何修复?

问题解决:Windows下Makefile条件判断报错

你的错误根源是把Make的条件指令ifeq当成了shell命令缩进在目标的命令块里。ifeq是GNU Make自身的语法,必须顶格书写,不能跟在tab键后面(缩进的行是要交给shell执行的外部命令,系统里不存在ifeq这个程序,所以会报错)。

正确写法一:Make层面的条件判断(推荐)

提前根据系统变量确定目标文件名,再编写编译规则:

# 顶格写Make的条件判断,确定目标文件
ifeq ($(OS),Windows_NT)
TARGET = hello.exe
else
TARGET = hello
endif

# 默认目标
all: $(TARGET)

# 编译规则,$@代表当前目标
$(TARGET): hello.cpp
	g++ hello.cpp -o $@

正确写法二:Shell层面的条件判断

如果你的Windows环境用的是bash类shell(比如Git Bash、MSYS2),可以把判断逻辑交给shell执行,注意命令行的续行和格式:

all:
	@if [ "$(OS)" = "Windows_NT" ]; then \
		g++ hello.cpp -o hello.exe; \
	else \
		g++ hello.cpp -o hello; \
	fi
  • 每行命令结尾的\是shell的续行符,必须保留
  • @可以让make不输出命令本身,只显示执行结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:39:55