【发布时间】:2015-12-23 21:34:32
【问题描述】:
我从我的 makefile 中得到以下输出。我的主要目标是编译目录中的所有内容。我希望将来会有更多的 cpp 文件。非常感谢任何提示或建议!
输出:
g++ `pkg-config --libs --cflags opencv libexif` main.cpp -o main.o
g++ `pkg-config --libs --cflags opencv libexif` Image.cpp -o Image.o
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Image.o] Error 1
当前文件列表: main.cpp、Image.h、Image.cpp
这是生成文件:
CC=g++
CFLAGS= `pkg-config --libs --cflags opencv libexif`
LDFLAGS= `pkg-config --libs --cflags opencv libexif`
SOURCES=main.cpp Image.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=CvHelloWorld
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm *.o
【问题讨论】:
-
不应该使用
-c选项编译吗? -
附带说明,您可以使用 glob 获取目录中的所有文件名,而无需明确列出它们。