假设我们有一个文件列表:
- 源代码
- 一个
- b
- C
- 生成文件
每个文件夹中有许多 .cc 和 .h 文件。Makefile怎么写??
当我写这样的路径时 ./a/a.cc 或 ../a/a.cc
会发生错误。
但是当我将文件放在同一目录并写为 a.cc 时。一切都好。
我在cygwin上运行它。谁能帮助我?
该wildcard
功能是您正在寻找的:http ://www.gnu.org/software/make/manual/html_node/Wildcards.html
在 Linux 上,我更喜欢 Automake/Autoconf 构建系统:http ://de.wikipedia.org/wiki/GNU_Build_System
另一种可能是 CMake:http ://www.cmake.org/
您遗漏了很多细节(例如,您想要放置目标文件的位置),但VPATH
可能正是您想要的。
VPATH = src/a src/b src/c
# Now you can write rules as if the .cc & .h files were in the current directory.
%.o: %.cc
do something with $<
foo.o: foo.cc bar.h
do something special with $<
src/
从不太清晰的目录图中,您似乎缺少Makefile
. 例如编译src/a/a.cc
,使用:
src/a/a.o: src/a/a.cc
$(CXX) $(CXXFLAGS) -c -o $@ $<
但是:帮自己一个忙,并使用真正的构建系统,例如CMake。它是跨平台的,可以生成 IDE 项目文件(例如 Visual Studio、Xcode、Eclipse、CodeBlocks 等),级别更高,并为您进行自动依赖跟踪。