假设我们有一个文件列表:
并且有很多.cc&每个文件夹中的.h文件。 如何编写Makefile ??
当我写这样的路径时 ./a/a.cc或../ a / a.cc
将发生错误。
但是当我把文件放在同一目录上时 并写为a.cc. 一切都好。
我在cygwin上运行它。 有人可以帮帮我吗?
答案 0 :(得分:1)
您正在寻找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/
答案 1 :(得分:1)
从不那么清晰的目录图中,您似乎错过了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等),更高级别,并为您进行自动依赖性跟踪。
答案 2 :(得分:1)
您遗漏了很多细节(例如,您要放置目标文件的位置),但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 $<