gpt4 book ai didi

c++ - Makefile 不会展开依赖

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:14 26 4
gpt4 key购买 nike

使用以下作为示例 makefile:

CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lfoobar
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello<p></p>

<p>all: $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@</p>

<p>$(OBJECTS):
$(CC) $(CFLAGS) $< -o $@
</p>

$< 总是展开为空。

我尝试将其更改为以下内容:

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello<p></p>

<p>all: $(OBJECTS) # or main.o foo.o bar.cpp
$(CC) $(LDFLAGS) $(OBJECTS) -o $@</p>

<p>.cpp.o:
$(CC) $(CFLAGS) $< -o $@
</p>

这告诉我 main.o 没有规则

我是不是漏掉了什么?我看到很多使用这些语法和/或变量和依赖项的 make 文件。

最佳答案

试试这个:

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)

构建每个目标文件的规则是内置的,因此无需定义它。

关于c++ - Makefile 不会展开依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com