c++ - makefile 错误,从 src 目录中的所有内容构建

标签 c++ makefile

我一直在尝试复制我在网上找到的一个 makefile。我目前遇到以下错误:

MyComputer:folderName userName$ make
make: bin/kernel: No such file or directory
make: *** [bin/kernel] Error 1

makefile源码如下:

### Typing 'make' will create the executable file.
CC = gcc
CFLAGS  = -g -Wall
LDFLAGS = 
LIBS = -lstdc++

TARGET = kernel
SRCDIR = src
OBJDIR = obj
BINDIR = bin
#TARGETDIR = $(BINDIR)/$(TARGET)

SOURCES  := $(wildcard $(SRCDIR)/*.cc)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
OBJECTS  := $(SOURCES:$(SRCDIR)/%.cc=$(OBJDIR)/%.o)
rm       = rm -f

$(BINDIR)/$(TARGET): $(OBJECTS)
    @$(LINKER) $@ $(LFLAGS) $(OBJECTS) $(LIBS)
    @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cc
    @$(CC) $(CFLAGS) -c $< -o $@
    @echo "Compiled "$<" successfully!"

#$(CC) $(CFLAGS) $(LFLAGS) -o $(MAIN) $(OBJS) $(LIBS) $@

#make clean removed from this code, unnecessary

我尝试过的事情:

  • $(BINDER)/$(TARGET): 更改为 $(BINDER)(make: bin: No such file or directory )
  • 更改文件夹权限并以 sudo 身份运行(无效)
  • 制作 bin/kernel 文件夹(使用 sudo 和 chmod 777 权限被拒绝)
  • 向我们的黑暗领主克苏鲁祈祷(可能是不可避免的厄运)

最佳答案

您的 Makefile 假定项目目录的结构如下:

.
├── bin
├── Makefile
├── obj
└── src
    └── main.cc

我修改了链接阶段,因为您没有定义 $(LINKER):

CC = gcc
CFLAGS  = -g -Wall
LDFLAGS = 
LIBS = -lstdc++

TARGET = kernel
SRCDIR = src
OBJDIR = obj
BINDIR = bin

SOURCES  := $(wildcard $(SRCDIR)/*.cc)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
OBJECTS  := $(SOURCES:$(SRCDIR)/%.cc=$(OBJDIR)/%.o)
rm       = rm -f

$(BINDIR)/$(TARGET): $(OBJECTS)
    @$(CC) -o $@ $(LFLAGS) $(OBJECTS) $(LIBS)
    @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cc
    @$(CC) $(CFLAGS) -c $< -o $@
    @echo "Compiled "$<" successfully!" 

运行 make 现在将创建内核二进制文件。

.
├── bin
│   └── kernel
├── Makefile
├── obj
│   └── main.o
└── src
    └── main.cc

关于c++ - makefile 错误,从 src 目录中的所有内容构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176137/

相关文章:

c++ - 具有混合依赖性的 Makefile 模式规则

c++ - complex.h 的 gcc 编译器选项

c++ - 删除抽象非虚拟 dtor C++

c++ - 在 qmake 工程文件中指定 qrc_foo.cpp 文件的路径

c++ - 在 linux 上安装 cpp 库

c - 如何在 Makefile 中使用带有 ':' 的变量?

c++ - 分配和删除指针

c# - 使用 DllImport 调用 C++ 函数

c++ - 根据文本文件中提供的类名创建对象?

c++ - 为什么我会看到此消息 "library not found for -lboost_system"?