Linux 编程中的多目录"make"

multi-directory "make" in linux programming

本文关键字:make 编程 Linux      更新时间:2023-10-16

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

  • 来源
    • 一个
    • C
  • 生成文件

每个文件夹中都有许多.cc和.h文件。如何编写生成文件?

当我写这样的路径时./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/

从不太清楚的目录图中,您似乎缺少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等),是更高级别的,并为您进行自动依赖关系跟踪。

您遗漏了很多细节(例如,要放置目标文件的位置),但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 $<