我的文件夹结构如下所示:
<div data-bind="with: currentDocument">
<input data-bind="tagit: {tagsList: tags}"></input>
</div>
我想创建一个像src
--main.cpp
tests
--src
----main_test.cpp
Makefile
这样的目标,以便能够将测试程序作为make main_test
运行。
最初我有一个Makefile,我很长时间没有修改过。所以我开始修改其内容,以便创建新的./main_test
目标。
生成文件
main_test
不幸的是,出了点问题:
CXX = g++
CXXFLAGS = -O2 -Wall -std=c++11 -Iinclude
LDFLAGS =
EXE = main
SRCDIR = src
BINDIR = bin
OBJDIR = tests/bin
OBJECTS = $(patsubst $(SRCDIR)/%.cpp,$(BINDIR)/%.o,$(wildcard
$(SRCDIR)/*.cpp))
all: $(EXE)
$(EXE): $(BINDIR) $(OBJECTS)
$(CXX) $(OBJECTS) -o $(EXE) $(LDFLAGS)
$(BINDIR)/%.o: $(SRCDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -MMD -o $@ $<
include $(wildcard $(BINDIR)/*.d)
$(OBJDIR):
mkdir -p $(OBJDIR)
main_test: $(OBJDIR) tests/bin/main_test.o
g++ -O2 -Wall -std=c++11 tests/bin/main_test.o -o tests/main_test
tests/bin/main_test.o: $(OBJDIR) tests/src/main_test.cpp
g++ -O2 -Wall -std=c++11 tests/src/main_test.cpp -o tests/bin/main_test.o
clean_tests:
rm -rf $(OBJDIR)
$(BINDIR):
mkdir -p $(BINDIR)
clean:
rm -rf $(BINDIR) $(EXE)
.PHONY: clean all
我该如何解决这个问题?
答案 0 :(得分:2)
在tests/bin/main_test.o
的编译规则中,您错过了-c
命令行选项。
对输出目录使用order-only dependency,例如:
main_test: tests/bin/main_test.o | $(OBJDIR)