C/C++汇编.在处理项目的简单生成文件时遇到问题
C/C++ compilation. Having trouble with simple makefile for a project
我已经在这个制作文件上工作了几个小时,似乎没有任何更改有效,但对我来说似乎完全没问题。也许我错过了一些基本的东西?
目录的外观如下:
project
makefile
obj
checkInput.cpp
olend.cpp
include
checkInput.h
这是生成文件:
I_DIR = include
OBJ_DIR = obj
CXX = g++
CXXFLAGS = -I$(I_DIR)
MAIN = olend
SRCS = checkInput.cpp
OBJ_SRCS = $(subst .cpp, .o, $(SRCS)), $(MAIN).o
OBJS = $(patsubst %, $(OBJ_DIR)/%, $(OBJ_SRCS))
DEP_SRCS = $(subst .cpp,.h,$(SRCS))
DEPS = $(patsubst %,$(I_DIR)/%,$(DEP_SRCS))
all: $(MAIN)
$(MAIN): $(OBJS)
$(CXX) $(CXXFLAGS) -o $(MAIN) $(OBJS)
$(OBJ_DIR)/%.o: %.cpp $(DEPS)
$(CXX) $(CXXFLAGS) -o $@ $<
.PHONY: clean
clean:
rm -f $(OBJ_DIR)/*.o $(MAIN)
我正在寻找一个可执行的"olend",我目前收到的错误是,
"No rule to make target 'obj/olend.o,', needed by `olend'. Stop."
这是非常直接的错误,但我不明白这是怎么发生的, $(OBJ_DIR)/%.o
应包括obj/olend.o
作为目标。任何帮助将不胜感激!
如果你仔细观察错误消息,它说它找不到的目标是'obj/olend.o' - 注意末尾的额外逗号。这来自您定义OBJ_SRCS
变量的方式。它应该看起来像这样:
OBJ_SRCS = $(subst .cpp,.o, $(SRCS)) $(MAIN).o
请注意,.o
之前没有空格(这导致它生成像checkInput .o
这样的文件名),并且$(MAIN)
部分之前没有逗号(这导致它生成类似以下内容:checkInput.o, olend.o
)。
相关文章:
- 使用mongocxx驱动程序时包含头文件问题
- 生成文件问题
- 从文件问题加载纹理 Android NDK 和 OpenGL
- Xcode 11 头文件问题
- 使用 c++ ifstream 读取文本文件问题
- 单独的类声明和方法定义文件问题
- C++生成文件问题
- 生成文件问题(体系结构x86_64的未定义符号:"_main",引用自:主可执行文件的隐式入口/启动)
- C++删除未使用的库的生成文件问题
- C++ 使文件问题
- 阅读矩阵市场文件C++问题
- 查找第一个文件问题无法使任何示例正常工作。
- "Recursive Makefile Considered Harmful"样式生成文件问题
- 标题文件问题中的类定义
- 嵌套 while 循环,包含文件 c++ 问题
- 几个制作文件问题
- 生成文件问题,获取"目标'rgbapixel.o'的配方失败"
- 从yaml文件问题opencv读取数据
- 类成员C++标头和 .cc 文件问题
- 添加选项以显示百分比时出现生成文件问题