【发布时间】:2012-09-16 18:25:01
【问题描述】:
我的 makefile 工作正常(GNU Make),但我想知道是否
- 有一种方法可以创建一个新目录“bin”并将所有 .o 放入其中
- 如果“1”的答案是“是”,“make clean”指令能否删除文件夹“bin”?
- 避免编写所有 .cpp 和 .o 文件名?
CFLAGS = -Wall -g CC = g++ EXEC = main OBJ = listpath.o Parser.o main.o all: $(EXEC) listpath.o: src/listpath.cpp $(CC) $(CFLAGS) -c src/listpath.cpp Parser.o: src/Parser.cpp $(CC) $(CFLAGS) -c src/Parser.cpp main.o: src/main.cpp $(CC) $(CFLAGS) -c src/main.cpp $(EXEC): $(OBJ) $(CC) $(CFLAGS) $(OBJ) -o $(EXEC) .cpp.o: $(CFLAGS) $< .PHONY: clean clean: rm $(OBJ) $(EXEC)
【问题讨论】:
-
应该使用什么方言? POSIX 制作? GNU 制造?完全不同的东西?
-
如果您使用
CXX和CXXFLAGS,您将能够利用很多隐含规则。 -
GNU 制造。我已经编辑了我的帖子。
-
使用 CMake 怎么样?免费为您提供树外构建,并且您不需要列出
.o名称(并且可以但也许不应该使用通配符来收集源文件)。它还可以轻松完成几乎所有您想做的事情,并从一开始就为您提供出色的便携性。