问题标签 [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 投票
2 回答
2670 浏览

python - 如何为python代码做Makefile依赖

我有一堆 C 文件,它们是由一组具有许多共享 python 模块的 python 程序生成的,我需要在我的 make 系统中考虑到这一点。

枚举需要运行哪个 python 程序来生成每个 C 文件很容易。我找不到一个好的解决方案是确定这些程序依赖于哪些其他 python 文件。我需要这个,所以如果共享的 python 文件之一发生更改,make 将知道需要重新生成什么。

是否有一个很好的系统可以从 python 源的集合中生成样式依赖规则?

0 投票
12 回答
9468 浏览

c++ - Getting base name of the source file at compile time

I'm using GCC; __FILE__ returns the current source file's entire path and name: /path/to/file.cpp. Is there a way to get just the file's name file.cpp (without its path) at compile time? Is it possible to do this in a portable way? Can template meta programming be applied to strings?

I am using this in an error logging macro. I really do not want my source's full path making its way into the executable.

0 投票
3 回答
7002 浏览

dependencies - 需要一个可以处理丢失文件的makefile依赖规则

我们为我们的系统使用 GNU Make。在我们的 makefile 的末尾,我们有一个名为 Makedepends 的包含,它使用 gcc 上的 -MM 开关生成一堆 .d 文件。然后,我们使用 include $(CXXFILES:.cc=.d) 行为每个 .cc 文件包含 .d 文件。但是当我们删除文件或移动文件时,依赖步骤会中断,我们必须手动删除 .d 文件(即使 make clean 也不起作用,因为依赖项失败)

有没有办法生成这些依赖 .d 文件或包含这些依赖 .d 文件,从而优雅地处理文件删除或重定位?

编辑:例如:我有serial.cc,makefiles生成一个serial.d文件,它依赖于buffer.h,但后来我改变了它,所以我不再需要buffer.h,我删除了buffer.h。下次我运行 make 时,它​​会阻塞,因为它包含仍然使 serial.o 依赖于 buffer.h 的 .d 文件。

0 投票
4 回答
3386 浏览

c - 依赖性检查 - 如何清理带有错误 makefile 的项目

我有一个非常大的 C 项目,其中包含许多单独的 C 文件和头文件以及许多贡献者。许多贡献者对 makefile 和依赖项没有深入的了解,这导致了一个常见的问题,即您几乎总是必须“make clean”才能相信“make”产生正确的输出。

如果 make 需要几分钟,这不会是一个问题,但现在在一台快速的机器上将近 2 个小时,人们开始检查他们制作时可以工作的代码,但他们没有先清理,他们的代码最终会中断构建。不要问为什么在新基线被削减之前构建经理没有捕捉到这些......

是的,我们不应该让它走这么远。

是的,我们正在教育我们的开发人员。

像往常一样,我们没有时间停止一切并手动修复它。

我认为有这些方面的工具:

  • 是否有自动化工具可以帮助从 C 和 H 文件为现有项目构建正确的依赖关系信息?
  • 是否有根据 makefile 描述依赖信息的自动化工具?
  • 是否有一个工具可以描述上述两个依赖树之间的差异?

但是还可以/应该做些什么来解决这个问题?

提前致谢...

-亚当

0 投票
5 回答
1925 浏览

perl - 在 Ksh 和 Perl 中并行执行任务的最佳方式是什么?

我有一个大型 C++ 项目,我需要在没有并行 make 的平台上构建它(比如 Linux 上的 make -j)。服务器有 6 个 CPU,我想手动进行并行构建。

我可以为大约 300 个目标文件生成这样的任务列表。我使用 Makefile 进行依赖检查和增量构建:

make -f Makefile obj1.o

make -f Makefile obj2.o

make -f Makefile obj3.o ...

在使用 Ksh 和 Perl 一次运行不超过 6 个任务的情况下,我将如何并行执行这些任务?(Java 或 Python 不可用 :-( )

0 投票
3 回答
24657 浏览

file - 如何检查makefile中是否存在文件

我有一个生成文件模板来编译单个 DLL(用于插件系统)。用户的 makefile 如下所示:

makefile.in我有:

plugin.os要编译的主要 C++ 文件在哪里。顺便说一句,文件结尾是.os为共享库编译的目标文件(即使用-fpic选项 with gcc

现在,问题是额外的源可能(但不一定)是头文件。理想情况下,我想将它们添加为目标plugin.os和 的依赖项file.cpp,但前提是它们存在。

该方法应该适用于 windows 和 linux,或者至少适用于每个。但是,我只使用 GNU 版本的 make。

0 投票
4 回答
229 浏览

makefile - (M|m)akefile 语义是什么?

使用 makefile 和 Makefile 有区别吗?

0 投票
1 回答
914 浏览

visual-studio - Visual Studio 的顶级 .mak 文件?

我继承了包含大约十几个子项目的 Visual C++ 源代码。其中之一是一个空的“MakeAll”项目,它依赖于所有其他项目,因此我可以通过将 MakeAll 项目设置为活动并选择“Build All”来构建整个项目。

我想自动化这个过程,并且来自 linux 环境,我的直觉是生成一个 Makefile 并从命令行构建。IDE 将为.mak每个子项目生成文件,但不会为顶级 MakeAll 生成文件。(我假设这是因为它只包含依赖项。)

linux 的答案将是一个 Makefile,它只是下降到每个子项目并make在每个子项目中执行。但是快速浏览这些.mak文件表明,每个人都希望被告知要使用几种配置中的哪一种——显然有些使用 Debug,有些使用 Release,有些使用由以前的开发人员炮制的配置。

从命令行构建一组这样的项目的公认方法是什么?

谢谢!

0 投票
3 回答
9886 浏览

refactoring - Makefile 中的循环

我有很多任务,我必须在添加更多后续编号的 C 程序时不断更新 Makefile。有没有办法通过循环遍历值 1.1、1.2、1.3 等来做到这一点?

0 投票
11 回答
38135 浏览

c++ - 用于 linux 的最小 c++ make 文件

我正在寻找一个简单的推荐用于 linux 的“最小”c++ makefile,它将使用 g++ 编译和链接单个文件和 h 文件。理想情况下,make 文件中甚至没有物理文件名,只有 .cpp 到 .o 的转换。生成这样一个 makefile 而不深入到 autoconf 的恐怖中的最佳方法是什么?

当前目录包含,例如

t.cpp th

我想要一个生成文件来创建它。我尝试了 autoconf,但它假设 .h 是 gcc 而不是 g++。是的,虽然不是初学者,但我正在从几年前重新学习项目操作的最佳方法,因此正在寻找自动化的方法来为小型项目创建和维护 makefile。