gpt4 book ai didi

c - makefile ("no input files"错误)

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:55 25 4
gpt4 key购买 nike

这绝对是我第一次制作 makefile,我真的很想了解这个过程。

我正在尝试为 C++ 项目创建一个非常简单的 makefile,其结构如下:

根文件夹
生成文件
自述文件
源文件夹
...源文件都在这里...
包含文件夹
...这里是外部库的头文件...
lib文件夹
...外部库文件都在这里...
bin文件夹
...构建可执行文件的输出目录...
obj文件夹
...目标文件都在这里...

我遵循了教程 here .

这是我的生成文件:

IDIR=include .
CC=g++
CFLAGS=-I$(IDIR)
ODIR=bin/obj
LDIR=lib
LIBS=none
SRC=src


_DEPS=hello.h
DEPS=$(patsubst %,$(IDIR)/,%(_DEPS))
_OBJ=file1.o file2.o
OBJ=$(patsubst %,$(ODIR)/%,$(_OBJ))

$(ODIR)/%.o: $(SRC)/%.cpp $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS) # $(LIBS)

test_proj: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS)

.PHONY: clean

clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~

当我对此运行 make 时,出现以下错误:

g++      -o .o
g++: fatal error: no input files
compilation terminated.
<builtin>: recipe for target '.o' failed
mingw32-make.exe: *** [.o] Error 1

我正在使用为 i686-pc-mingw32 构建的 GNU Make 3.82.90,如果这很重要的话。

谁能指出我犯的任何荒谬错误?

最佳答案

IDIR=include .

是第一个问题。替换为:

IDIR=include

使用您的代码 CFLAGS 扩展为:

-Iinclude .

恐怕这没有意义。第二个问题是:

DEPS=$(patsubst %,$(IDIR)/,%(_DEPS))

应该是:

DEPS=$(patsubst %,$(IDIR)/%,$(_DEPS))

并将扩展为:

DEPS=include/hello.h

如果你解决了第一个问题,否则为:

DEPS=include ./hello.h

这也没有意义。这两个错误的累积影响是奇怪的配方(我没有尝试手动扩展它们),可能会触发带有错误参数的 make 隐式规则。

关于c - makefile ("no input files"错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com