我是制作文件的新手,我通过一些试验和错误把它放在一起。此代码用于编译我的 c++ 程序。
我的 main.cpp 文件与 makefile 位于同一文件夹中。我有一个 lib/ 文件夹,其中包含主要依赖的标题。
下面的 makefile 可以正确且完整地编译我的代码。但我期待我会找到留下的 *.o 对象。(请注意,我尝试使用和不使用“干净”规则,并且两次都得到相同的结果。)
#
# Makefile
#
CXX = g++
CCFLAGS = -O3 -I/sw/include -L/sw/lib
## /sw/include and /sw/lib contain dependencies for files in my lib/
LDFLAGS = -lpng
OPTS = $(CCFLAGS) $(LDFLAGS)
SOURCES = $(wildcard lib/*.cpp) main.cpp
OBJECTS = $(SOURCES: .cpp = .o)
TARGET = spirals
$(TARGET): $(OBJECTS)
$(CXX) $(OPTS) $^ -o $@
.PHONY: depend
depend:
g++ -MM $(SOURCES) > depend
## generate dependencies list
include depend
.PHONY: clean
clean:
rm -f *.o lib/*.o $(TARGET)
另外,如果重要的话,我在 MacOSX 上,我的程序是用 xcode 设计的。(我知道 xcode 有自己的构建流程,但我正在为 linux 系统设计一个命令行程序,我想在 bash 环境中测试编译和链接,而不仅仅是通过 xcode。)
问题:
一旦创建了主要目标,我期望 makefile 生成 *.o 文件是否正确?
如果是这样,为什么我的 makefile 不这样做?