linux编程中的多目录“make”

Posted

技术标签:

【中文标题】linux编程中的多目录“make”【英文标题】:multi-directory "make" in linux programming 【发布时间】:2012-04-25 07:22:43 【问题描述】:

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

源 一个 b c 生成文件

每个文件夹中有很多 .cc 和 .h 文件。 Makefile怎么写??

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

会发生错误。

但是当我把文件放在同一个目录时 并写为 a.cc。 一切正常。

我在 cygwin 上运行它。 谁能帮帮我?

【问题讨论】:

发布您的 makefile 示例会很有帮助。 应该与 ./a/a.cc 一起工作,但你必须确保依赖关系是正确的。 Makefile 永远不会改变工作目录 可能与此重复:***.com/q/9313760/1025391 【参考方案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/

【讨论】:

我是新人。 *** 真的是一个聚集了全世界***极客的优秀网站。这些答案非常有用,我都接受了。有人收到了吗? 感谢您的建设性意见~【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于linux编程中的多目录“make”的主要内容,如果未能解决你的问题,请参考以下文章

《TCP/IP高效编程:改善网络程序的44个技巧》源码在Linux上的编译

Linux下的多进程编程

多线程编程之Linux环境下的多线程

多线程编程之Linux环境下的多线程

[转]Linux 的多线程编程的高效开发经验

Linux 操作系统原理 — NUMA 架构中的多线程调度开销与性能优化