标签: gnu-make

:= vs = in make macros

可能重复:
GNU Makefile变量赋值=,?=,:=和+ =之间有什么区别?

我只知道非常基本的makefile语法,并且正在阅读另一个项目makefile并且遇到:=了宏声明.他们为什么要用它?

换句话说,两者之间是否有任何区别

MYMACRO = hi i'm a macro
Run Code Online (Sandbox Code Playgroud)

MYMACRO := hi i'm a macro
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make colon-equals

56
推荐指数
1
解决办法
5万
查看次数

GNU make的-j选项

自从我了解了-j后,我就轻松地使用了-j8.前几天我正在编译一个地图集安装,但是make失败了.最终我将其追踪到了无序的事情 - 一旦我回到单线程制作,它就能正常工作.这让我很紧张.在编写自己的make文件时,我需要注意哪些条件,以避免使用make -j做出意外的事情?

gnu-make

53
推荐指数
4
解决办法
4万
查看次数

当我们可以编写自己的makefile时,为什么要使用像Autotools这样的构建工具?

最近,我将开发环境从Windows切换到了Linux.到目前为止,我只使用Visual Studio进行C++开发,因此许多概念,如makeAutotools,对我来说都是新的.我已经阅读了GNU makefile文档并且几乎了解了它.但我对Autotools感到困惑.

据我所知,makefile用于简化构建过程.

  1. 为什么我们需要像Autotools这样的工具来创建makefile?由于所有人都知道如何创建一个makefile,我没有真正使用Autotools.
  2. 标准是什么?我们需要使用这样的工具还是手写的makefile呢?

linux autotools gnu-make

52
推荐指数
6
解决办法
1万
查看次数

从make文件中禁用make内置规则和变量

我想禁用内置规则和变量,因为从make文件中传递-r-R选项到GNU make.允许我隐式和透明地执行此操作的其他解决方案也是受欢迎的.

我发现了几个使用的参考MAKEFLAGS,并有类似的问题.

gnu makefile build gnu-make

52
推荐指数
6
解决办法
2万
查看次数

Makefile中的函数

我正在编写一个包含大量重复内容的Makefile,例如

debug_ifort_Linux:
        if [ $(UNAME) = Linux ]; then                           \
          $(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..."  \
                  TARGET=$@ LEXT="ifort_$(UNAME)" -e syst;      \
        else                                                    \
          echo $(err_arch);                                     \
          exit 1;                                               \
        fi
Run Code Online (Sandbox Code Playgroud)

在定义目标'syst'的地方,定义了变量'UNAME'(通常是Linux,但也可能是Cygwin或OSF1),并且还定义了变量'difort'和'err_arch'.这段代码对于不同的编译器目标使用了很多次(使用名称约定'").由于这是一个庞大的冗余代码,我希望能够以更简单的方式编写它.例如,我想做这样的事情:

debug_ifort_Linux:
        compile(uname,compiler,flags,petsc_flags,target,lext)
Run Code Online (Sandbox Code Playgroud)

其中compile可以是一个基于参数执行上述代码的函数.有谁知道我怎么能做到这一点?

bash makefile function gnu-make

49
推荐指数
2
解决办法
3万
查看次数

Makefile中的通配符目标

如何压缩以下Makefile目标?

$(GRAPHDIR)/Complex.png: $(GRAPHDIR)/Complex.dot
        dot $(GRAPHDIR)/Complex.dot -Tpng -o $(GRAPHDIR)/Complex.png

$(GRAPHDIR)/Simple.png: $(GRAPHDIR)/Simple.dot
        dot $(GRAPHDIR)/Simple.dot -Tpng -o $(GRAPHDIR)/Simple.png

$(GRAPHDIR)/IFileReader.png: $(GRAPHDIR)/IFileReader.dot
        dot $(GRAPHDIR)/IFileReader.dot -Tpng -o $(GRAPHDIR)/IFileReader.png

$(GRAPHDIR)/McCabe-linear.png: $(GRAPHDIR)/McCabe-linear.dot
        dot $(GRAPHDIR)/McCabe-linear.dot -Tpng -o $(GRAPHDIR)/McCabe-linear.png

graphs: $(GRAPHDIR)/Complex.png $(GRAPHDIR)/Simple.png $(GRAPHDIR)/IFileReader.png $(GRAPHDIR)/McCabe-linear.png
Run Code Online (Sandbox Code Playgroud)

-

GNU Make 3.81.

makefile gnu-make

49
推荐指数
3
解决办法
5万
查看次数

如何重新编译单个内核模块?

通常内核源存储在/usr/src/linux-2.6.x/.如果我修改模块的源代码,为了避免重新编译整个内核,我该如何重新编译该模块?

linux makefile gnu-make kernel-module linux-kernel

48
推荐指数
4
解决办法
4万
查看次数

如何获取makefile的调用目标?

如何获取GNU的调用目标make Makefile?

例如,我make使用以下命令行调用:

make a-target
Run Code Online (Sandbox Code Playgroud)

如何在Makefile中获取调用目标"a-target"并将其分配给变量?

此外,如果在命令行上指定了多个目标:

make target1 target2 ...
Run Code Online (Sandbox Code Playgroud)

我如何获得所有这些?

gnu makefile gnu-make

40
推荐指数
2
解决办法
2万
查看次数

抑制并忽略Makefile的输出?

我知道@前缀会抑制Makefile中shell命令的输出,并且-前缀将忽略shell命令中的错误.有没有办法将两者结合起来,即一个抑制输出的前缀并忽略错误?我不认为@--@有效.

makefile gnu-make

40
推荐指数
2
解决办法
3万
查看次数

在每个子目录中运行make

我有一个目录(root_dir),其中包含许多子目录(subdir1, subdir2, ...).

我想make在每个目录中运行root_dir,使用放置在其中的Makefile.(显然假设每个subdir...内部都有自己的Makefile).

所以基本上有两个问题:

  1. 如何在Makefile中自动获取目录列表?
  2. 如何为make文件中的每个目录运行make?

我知道为了在特定目录中运行make,我应该注意以下事项:

$(MAKE) -C subdir
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

38
推荐指数
3
解决办法
5万
查看次数