linux - 具有不同目录中的源文件的 Makefile

标签 linux makefile

我有一个项目,目录结构是这样的:

                         $projectroot
                              |
              +---------------+----------------+
              |               |                |
            part1/          part2/           part3/
              |               |                |
       +------+-----+     +---+----+       +---+-----+
       |      |     |     |        |       |         |
     data/   src/  inc/  src/     inc/   src/       inc/

我应该如何编写一个部分/src(或其他任何地方)的makefile,它可以在部分c/c++源文件上完成/链接?/src?

我可以做类似的事情吗 -I$projectroot/part1/src -I$projectroot/part1/inc -I$projectroot/part2/src ...

如果这样可行,有没有更简单的方法。我见过每个相应部分都有一个makefile的项目吗?文件夹。 [在这篇文章中,我使用了 bash 语法中的问号]

最佳答案

传统的方法是在每个子目录(part1part2 等)中都有一个 Makefile 允许您构建它们独立。此外,在构建所有内容的项目的根目录中有一个 Makefile。 “根” Makefile 如下所示:

all:
    +$(MAKE) -C part1
    +$(MAKE) -C part2
    +$(MAKE) -C part3

由于 make 目标中的每一行都在其自己的 shell 中运行,因此无需担心遍历目录树或其他目录。

我建议看看 GNU make manual section 5.7 ;很有帮助。

关于linux - 具有不同目录中的源文件的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139271/

相关文章:

php - 将 php 网站从 Linux 移至 Windows

linux - 为命令行快速开发 GUI

php - 消息 : fsockopen(): unable to connect to ssl://smtp. googlemail.com:465(权限被拒绝)

linux - RT Linux 中的快速周期性任务

testing - 如果源文件中存在已定义的符号,gcc 可以进行测试吗

linux - make 文件中带有硬编码 $ 的 sed 命令

linux - 将声音样本播放器添加到 GUI : visual bug

build - cmake - 防止 `make clean` 清理 ExternalProject

linux - 编译 openssl 失败,出现 "/usr/bin/ld: cannot find -lz"

xml - 如何从 Perl 脚本定义 Makefile 变量?