问题标签 [makefile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
87982 浏览

gcc - 如何让 Makefile 自动重建包含修改后的头文件的源文件?(在 C/C++ 中)

我有以下生成文件,用于构建我正在处理的程序(实际上是内核)。它从头开始,我正在学习这个过程,所以它并不完美,但我认为它在这一点上已经足够强大,足以满足我编写 makefile 的经验水平。

我对这个 makefile 的主要问题是,当我修改一个或多个 C 文件包含的头文件时,不会重新构建 C 文件。我可以通过让我的所有头文件成为我所有 C 文件的依赖项来很容易地解决这个问题,但这会在我更改/添加头文件时有效地导致项目的完全重建,这不会很优雅。

我想要的只是重建包含我更改的头文件的 C 文件,并重新链接整个项目。我可以通过使所有头文件成为目标的依赖项来进行链接,但我无法弄清楚当它们包含的头文件较新时如何使 C 文件失效。

我听说 GCC 有一些命令可以使这成为可能(因此 makefile 可以以某种方式找出需要重建哪些文件)但我无法找到一个实际的实现示例来查看。有人可以发布一个可以在生成文件中启用此行为的解决方案吗?

编辑:我应该澄清一下,我熟悉将单个目标放入并让每个 target.o 都需要头文件的概念。这要求我每次在某处包含头文件时都编辑makefile,这有点痛苦。我正在寻找一种可以自行派生头文件依赖项的解决方案,我相当肯定我在其他项目中看到过。

0 投票
2 回答
1751 浏览

windows - 通用makefile?

是否有一个通用的 makefile 我可以用来构建一个简单的 C++ 项目?在窗户上?我将工作的wii makefile 修改为win32,但无法正确构建(make 的差异?make 应用程序和makefile 似乎已找到)。我做了一些小技巧,并制作了一份 mingw32-make 的副本。

-edit- export PATH 似乎是我现在使用我的新makefile(单个文件而不是2)得到我的旧错误(make:make Command not found)的原因

"make" make[1]: `/c/nightly/test/test.exe' 没有什么可做的。

这是我当前的 makefile http://pastie.org/318548

我正在使用mingw。我从该站点安装了另一个带有代码块的安装。'make' 二进制文件是一个复制的 mingw32-make.exe,我在其中切掉了前缀。做 make -hi get "This program built for i686-pc-msys" 所以看起来是正确的

0 投票
1 回答
56 浏览

makefile - stange -I 效果与 make 和 bad -L

我正在尝试构建一个自动构建系统。我花了一点时间将一个工作的wii通用makefile更改为一个工作的win32(使用mingw32)makefile。

我的品牌在这里http://pastie.org/319482

奇怪的效果是,如果我删除了 ABS_INCL(第 31 行)中路径之前的 a,则构建不起作用并抱怨缺少第一个路径指定的标头。为什么要这样做?我无法追踪问题。

下一个问题是当我放入需要 libcurl 的代码时,我仍然可以编译但不再按预期链接。我将 curl 添加到我的库(第 47 行)和路径(第 53 行)中,看起来我正确地包含它并且库的顺序正确(我在将 wii 转换为 win32 时尝试尽可能少地触摸)和我看不到问题。有谁知道为什么会这样?

这是用于测试的简单来源

0 投票
2 回答
697 浏览

makefile - 为多个操作系统创建一个makefile,这个make(ext?)不起作用?

我有一个使用 mingw32 构建的工作 makefile。现在我将该makefile重命名为Makefile.w32(来源-> http://pastie.org/319964

现在我有一个带有以下内容的 Makefile。问题是,它没有构建我的源

结果:

在我看来,它不喜欢 Makefile.w32 扩展名。我不明白为什么它没有建立。它很明显进入了我的“make Makefile.w32”行。

0 投票
4 回答
10046 浏览

makefile - makefile调用makefile错误

我有一个有效的品牌,我有平台代码,并且喜欢文件夹中每个操作系统的几个品牌。现在我有一个可以工作的makefile。我将它重命名为 Makefile.ws 并在 Makefile 中写了这个

我运行它并收到此错误

奇怪的是,清洁工作完美。然后我决定写“make -f Makefile.w32 mingw32”,但它不能正常工作。事实上,它创建了一个名为 mingw32 的文件夹,我认为这很奇怪。

至于 mingw32 规则,我只是复制我怀疑是用于构建的主要/正常规则的构建

完整的 .w32 源代码在这里 http://pastie.org/320035

0 投票
3 回答
439 浏览

makefile - 有没有办法在不运行 ./configure 的情况下创建 Makefile?

我想跳过测试并创建一个(默认)Makefile。

0 投票
5 回答
54392 浏览

c++ - 为 C/C++ 中的项目的 makefile 生成依赖项

我有一个项目,其生成文件的依赖项已损坏。除了手动检查每个源文件或使用手写的 perl 脚本之外,是否有任何最知名的方法可以为我可以在 makefile 中使用的项目生成依赖项列表?

0 投票
8 回答
203586 浏览

c++ - 如何在 Visual Studio 中使用 makefile?

我听说过很多关于 makefile 以及它们如何简化编译过程的信息。我正在使用VS2008。有人可以推荐一些在线参考资料或书籍,我可以在其中找到更多关于如何处理它们的信息吗?

0 投票
3 回答
1830 浏览

makefile - 这个 Makefile 在做什么?

我是使用 makefile 的新手,我有一些 makefile。其中一个有这些陈述,我试图理解,但我不能。

这个makefile在做什么?

阿姆里

0 投票
5 回答
372 浏览

linux - 这个构建系统可以加速吗?

我们的构建速度很慢。它在 linux 上使用嵌套的 gnu makefile。它为来自同一源树的三个不同目标创建三个构建。它使用符号链接依次指向三个并行目录树中的每一个。我们可以通过在子目录中使用 make 来进行部分构建,这样可以节省时间,但如果我们的工作跨越多个目录,我们必须为三个目标中的至少一个进行构建,这至少需要 45 分钟。仅构建子目录可能需要“仅”5-10 分钟。

你知道有什么快速检查可能会阻碍这个构建系统的事情吗?例如,是否有更快的符号链接替代方案?

另外:我看过有关递归生成文件的论文。有没有人知道将当前有许多 makefile(大约 800 个)和超过 450 万行源代码的 Makefile 系统扁平化会产生什么影响?人们目前喜欢通过在该目录中使用 make 来构建他们当前的子目录或进程(嵌入式 linux 目标)。

我刚刚了解到,直到最近,构建时间是原来的两倍(wince),此时发布工程师部署了 ccache。