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

recursion - 递归Make - 朋友还是敌人?

我在我的项目中使用(GNU)Make。我目前正在为每个目录放置一个 makefile,并使用 SUBDIRS 指定子目录。有人向我建议,这不是使用 make 的理想方式,而是使用一个顶级 make 文件(或多个,使用 include 拆分)。我过去曾尝试过迁移/使用此布局,但在我看来,它没有必要复杂。

使用递归 makefile 有哪些优点/缺点?

0 投票
2 回答
358 浏览

c++ - 如何自动创建具有最新编译时间的文件并将其包含到库中?

我有一个包含大约 100 个源文件的库。如果已编译任何其他文件,我希望始终重新构建其中一个源,但我不希望每次运行 make/build 时都构建它。

基本上我希望这个文件有最后的构建日期/时间,所以任何链接到库的应用程序都可以检查最后的构建时间/日期。有没有其他方法可以做到这一点?

0 投票
5 回答
61273 浏览

makefile - 通用 GNU makefile 目录路径

我试图通过使用一个通用的 makefile 来整合一些构建信息。我的问题是我想使用来自不同子目录级别的 makefile,这使得工作目录值 ( pwd) 不可预测。例如:

如果我Makefile.common从子目录中包含,像这样,$(TOP)目录不正确,其他一切都遵循:

Makefile.common使用自己的目录路径而不是更善变的最佳方法是什么pwd

0 投票
4 回答
2315 浏览

64-bit - autotools可以创建多平台makefile吗

我有一个我已经开发了几年的插件项目,该插件可与 [主要应用程序版本、第 3 方库版本、32 位与 64 位] 的多种组合一起使用。是否有一种(干净的)方法可以使用 autotools 创建一个构建所有版本插件的 makefile。

据我通过浏览 autotools 文档可以看出,与我想要的最接近的是拥有 N 个独立的项目副本,每个副本都有自己的 makefile。这对于测试和开发来说似乎有点不太理想,因为 (a) 我需要在所有不同的副本中不断传播代码更​​改,并且 (b) 多次复制项目会浪费很多空间。有没有更好的办法?

编辑:

一段时间以来,我一直在推出自己的解决方案,我有一个花哨的 makefile 和一些 perl 脚本来寻找各种 3rd 方库版本等。因此,我对其他非 autotools 解决方案持开放态度。对于其他构建工具,我希望它们对最终用户来说非常容易安装。这些工具还需要足够聪明,以便在没有大量麻烦的情况下搜索各种 3rd 方库和标头。我主要是在寻找一个 linux 解决方案,但一个也适用于 Windows 和/或 Mac 的解决方案将是一个奖励。

0 投票
4 回答
780 浏览

svn - 延迟或重复 GNU make 中的先决条件

我正在尝试将我的 Subversion 修订号嵌入到 C++ 项目中,并且在设置 GNU make 时遇到问题。我的 makefile 目前看起来像这样:

svnversion.o取决于svnversion.cpp(通过模式规则)和svnversion.h(明确列出,因为依赖检查由于某种原因没有捡起它)。 svnversion.hupdate-svnversion-h.pl脚本创建和维护(基本上只是运行svnversion并将输出转换为 C++ 文件)。

目前,我必须运行make两次才能使文件保持最新。第一次,make运行update-svnversion-h.pl(因为它被列为先决条件)但不检查svnversion.h之后的时间戳以查看它是否被 更改update-svnversion-h.pl,因此它不会重新制作svnversion.o。第二次,它确实检查了时间戳,update-svnversion-h.pl无论如何都会运行(这次它什么都不做,因为svnversion.h它是最新的),然后重新编译svnversion.cpp为 make svnversion.o

有没有办法告诉 GNU make 两次评估单个先决条件或延迟检查先决条件的时间戳,直到该先决条件的命令完成后?

或者,有没有更好的方法在我的源代码中嵌入修订号?(为了速度,我试图避免在每次构建时都需要重新编译的解决方案。)

0 投票
7 回答
30476 浏览

makefile - 使用 -fPIC 选项重新编译,但该选项已在 makefile 中

制作时出现此错误:

它说我应该使用该-fPIC选项重新编译。我这样做了,将-fPIC选项添加到CFLAGSand CXXFLAGS,但我仍然得到同样的错误。有没有办法解决这个问题?我已经看到这个问题与使用64位机器有关,而且我使用的是一个。

0 投票
6 回答
40450 浏览

c++ - Clrdump (C++) 错误 LNK2019:函数 _main 中引用的未解析的外部符号 __imp__RegisterFilter@8

我正在使用带有 pvcs 编译器的 makefile 系统(使用 Microsoft Visual C++,2008 编译器)并且我收到了以下形式的几个链接错误:

error LNK2019: unresolved external symbol __imp__RegisterFilter@8 referenced in function _main

尽管使用extern "C"声明,即发生这种情况,即:

此外,在 makeexe.mak 中,该库被链接为:

$(编译库)\lib\clrdump.lib\

老实说,我不是 makefile 方面的专家,我正在将系统从 Microsoft Visual C++ 6.0 转换到 2008。这种转换可能与链接错误有关,因为系统以前可以正常工作。

任何帮助将不胜感激。

提前致谢,

真诚的,约瑟夫

-- 编辑 1 --

有谁知道如何在 pvcs 的 makefile 系统中打开详细信息?

请注意,上面的函数已经是编译器修饰的版本,具有

而 C++ 函数只是

感谢您的帮助,但如果有人可以发布更完整的解决方案,那也将不胜感激。

真诚的,约瑟夫

-- 编辑 2 --

某个好心人发布了这个,但是当我登录时它消失了:

imp 前缀表示该函数是从 DLL 导入的。检查CLRDUMP_API- 的定义是__declspec(dllimport)吗?有关更多信息,请参阅本文。

有一个工作链接,但我失去了它,但我想人们总是可以搜索这个主题。

谢谢,不管你是谁!

-- 编辑 3 --

谢谢 ChrisN(我还不能投票)。尽管使用了刷新按钮,但您的答案消失了,但在我发布剪切粘贴后又重新出现。

这是我的定义:

我假设 __stdcall 没问题?

-- 编辑 4 --

虽然我感谢那些回答的人,尤其是 ChrisN,至少在我的特定系统上所做的努力,但链接错误仍然存​​在。因此,如果有人有任何进一步的见解,我将不胜感激。再次感谢。

0 投票
8 回答
275682 浏览

ubuntu - 什么是 makeinfo,我如何获得它?

我正在尝试构建 GNU grep,当我运行 make 时,我得到:

什么是 makeinfo,我如何获得它?

(这是 Ubuntu,如果它有所作为)

0 投票
2 回答
74682 浏览

include - 为 Makefile 中的标题添加目录

您好我想问您,如果有人知道如何在 Makefile 中为头文件添加目录以避免错误 *.h not found,我尝试过此选项但不起作用:

0 投票
3 回答
12344 浏览

linux - 如何安排 Makefile 来编译具有多个 .c 文件的内核模块?

如何安排 Makefile 来编译具有多个 .c 文件的内核模块?

这是我当前的 Makefile。它是由KDevelop自动生成的