我有一个名为MAKE的目录和两个子目录的源和标头。 source包含cpp文件,header包含一个头文件,该文件包含在所有三个cpp文件中。 我正在尝试创建一个make文件。 我试图从目录中访问源文件和头文件。我当前的目录是MAKE(我的make文件存在)。
我收到错误,因为没有规则来定位。停止 哪里出错了
CC = g++
INC_SOURCE = -I/home/abhiskekkumar/Desktop/VINEETH/Make/source/
INC_DEST = -I/home/abhiskekkumar/Desktop/VINEETH/Make/header
SOURCE = $(shell echo *.cpp)
HEADER = $(shell echo *.h)
OBJECT = $(SOURCE:.cpp=.o)
TARGET = output
EXEC: $(TARGET)
./output
$(TARGET): $(OBJECT)
$(CC) $(INC_SOURCE) $(INC_DEST) -o $(TARGET) $(OBJECT)
答案 0 :(得分:0)
第1步:我们编写了一个什么都不做的makefile,但做得不错。
nothing:
@:
我们必须对此进行测试,并在我们继续之前将其完美运行。
第2步:我们会生成一个源文件列表,并将其打印出来,以便我们知道它是正确的。
SOURCE = $(wildcard source/*.cpp)
$(info $(SOURCE))
nothing:
@:
我们必须对此进行测试,并在我们继续之前将其完美运行。
第3步:我们决定要将目标文件放在哪里(例如MAKE/
,MAKE/source/
或其他地方。
试试这个,发表评论并结果,我们将继续。
答案 1 :(得分:0)
CC = g++
TARGET = vineeth
CFLAGS = -Wall
LINKER = g++ -o
SRCDIR = source
HEADDIR = header
OBJDIR = obj
BINDIR = bin
SOURCES := $(wildcard $(SRCDIR)/*.cpp)
INCLUDES := $(wildcard $(HEADDIR)/*.h)
OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)
$(BINDIR)/$(TARGET): $(OBJECTS)
$(LINKER) $@ $(LFLAGS) $(OBJECTS)
@echo "Linking complete!"
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
@$(CC) $(CFLAGS) -c $< -o $@
@echo "Compiled "$<" successfully!"