C++ Makefile不会扩展依赖项
将以下内容用作示例makefile:C++ Makefile不会扩展依赖项,c++,linux,makefile,C++,Linux,Makefile,将以下内容用作示例makefile: CC=g++ CFLAGS=-c-墙 LDFLAGS=-lfoobar SOURCES=main.cpp foo.cpp bar.cpp 对象=$(源:.cpp=.o) 可执行文件=你好 全部:$(对象) $(CC)$(LDFLAGS)$(对象)-o$@ $(对象): $(CC)$(CFLAGS)$
CC=g++
CFLAGS=-c-墙
LDFLAGS=-lfoobar
SOURCES=main.cpp foo.cpp bar.cpp
对象=$(源:.cpp=.o)
可执行文件=你好
全部:$(对象)
$(CC)$(LDFLAGS)$(对象)-o$@
$(对象):
$(CC)$(CFLAGS)$<-o$@
$<始终扩展为零
我已尝试将其更改为以下内容:
CC=g++
CFLAGS=-c-墙
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
对象=$(源:.cpp=.o)
可执行文件=你好
全部:$(对象)#或main.o foo.o bar.cpp
$(CC)$(LDFLAGS)$(对象)-o$@
.cpp.o:
$(CC)$(CFLAGS)$<-o$@
这告诉我main.o没有规则
我是不是遗漏了什么?我看到很多使用这些语法和/或变量和依赖项生成文件。试试以下方法:
CXX=g++
CXXFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) # or main.o foo.o bar.cpp
$(CXX) -o $@ $(LDFLAGS) $(OBJECTS) $(LIBS)
生成每个对象文件的规则是内置的,因此不需要定义它。
$第二次尝试的语法似乎是正确的。你检查了make-rd的输出并确认main.cpp存在了吗?我直接复制并粘贴了你的make文件到一个新的makefile中,我仍然得到“没有规则生成targetmain.o”,这是
hello.Stop.需要的。我不明白这个…main.o有什么问题?不是主菜吗?看起来你的文件命名被破坏了!那是。。古怪的我发誓我会直接复制并粘贴到。。我不知道资本是怎么变的。。。人力资源管理。。不过,我现在似乎走对了方向。
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(OBJECTS) # or main.o foo.o bar.cpp
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
CXX=g++
CXXFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) # or main.o foo.o bar.cpp
$(CXX) -o $@ $(LDFLAGS) $(OBJECTS) $(LIBS)