Manjaro KDE下使用Geany编译代码报make无目标无makefile错误如何解决
你遇到的make: *** No targets specified and no makefile found. Stop.报错,本质是Geany默认的构建规则调用了make工具,但你当前项目目录下没有编写Makefile文件,也没有指定编译目标。
前置检查
先确认你的系统已经安装基础编译工具链,打开终端执行以下命令安装:sudo pacman -S base-devel gcc
场景1:仅编译单个代码文件(不需要Makefile)
这是新手最常见的使用场景,你不需要点击工具栏的「Build(构建)」按钮,直接使用单文件编译相关功能即可:
- 仅编译当前文件生成对象文件:按快捷键
F8 - 编译当前文件为可执行文件并运行:按快捷键
F9
如果按上述快捷键仍然报错,检查Geany的编译配置:
- 打开Geany顶部菜单「构建」->「设置构建命令」
- 找到你正在使用的编程语言对应配置项(以C语言为例),确认命令配置正确:
- 编译命令:
gcc -Wall -c "%f" - 生成可执行文件命令:
gcc -Wall -o "%e" "%f" - 运行命令:
"./%e"
- 编译命令:
- 保存配置后重新编译即可。
场景2:多文件项目需要使用Makefile编译
如果是多文件组成的项目,需要你在代码存放的根目录手动编写名为Makefile的规则文件,写明编译目标、依赖、编译参数后,再点击Geany的构建按钮才会正常生效。
以下是一个最简单的C语言多文件项目Makefile示例:
# 定义编译器 CC = gcc # 定义编译参数 CFLAGS = -Wall # 定义最终生成的可执行文件名 TARGET = my_program # 定义所有需要的对象文件 OBJS = main.o func.o # 生成最终可执行文件的规则 $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^ # 通用的.c文件编译为.o文件的规则 %.o: %.c $(CC) $(CFLAGS) -c $< # 清理中间文件和可执行文件的规则 clean: rm -f $(OBJS) $(TARGET)
将上述内容保存为无后缀、文件名为Makefile(注意大小写敏感)的文件,放在你的代码同级目录下,再点击构建按钮即可正常执行编译。
内容的提问来源于stack exchange,提问作者matematicianu'
相关产品推荐
相关产品推荐

