假设我们有一个文件列表:
src
一种
b
C
生成文件
每个文件夹中都有许多.cc和.h文件。
如何编写Makefile?
当我写这样的路径时
./a/a.cc或../a/a.cc
将会发生错误。
但是当我将文件放在同一目录中时
并写为a.cc。
一切都好。
我在cygwin上运行。
谁能帮我吗?
发布您的makefile的示例将很有帮助。
应该与./a/a.cc一起使用,但是您必须确保相关性正确。 Makefile永远不会更改工作目录
可能与此重复:stackoverflow.com/q/9313760/1025391
您遗漏了许多细节(例如,您要将对象文件放置在何处),但是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 $<
从不太清楚的目录图中,您似乎在Makefile中缺少src/目录前缀。 例如。 要编译src/a/a.cc,请使用:
src/a/a.o: src/a/a.cc
$(CXX) $(CXXFLAGS) -c -o $@ $<
但是:帮个忙,并使用真正的构建系统,例如CMake。 它是跨平台的,可以生成IDE项目文件(例如用于Visual Studio,Xcode,Eclipse,CodeBlocks等),级别更高,并且可以自动为您跟踪依赖项。
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/
我是新人。 Stackoverflow确实是一个出色的网站,聚集了全世界最高级的极客。 这些答案非常有用,我接受了所有答案。 有人收到吗?
谢谢你的建设性意见?