linux编程中的多目录“make”

时间:2012-04-25 07:22:44

标签: c++ c linux makefile

假设我们有一个文件列表:

  • SRC
    • 一个
    • B'/ LI>
    • C
  • 生成文件

并且有很多.cc&每个文件夹中的.h文件。 如何编写Makefile ??

当我写这样的路径时 ./a/a.cc或../ a / a.cc

将发生错误。

但是当我把文件放在同一目录上时 并写为a.cc. 一切都好。

我在cygwin上运行它。 有人可以帮帮我吗?

3 个答案:

答案 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 $<