【问题标题】:Figuring out the intended target system of a makefile找出生成文件的预期目标系统
【发布时间】:2012-02-06 11:05:20
【问题描述】:

我正在尝试了解 make 文件所采取的确切操作(第一次使用 make 进行构建)。

我想知道 make 文件是否打算供 BSD make、GNU make 或 Windows nmake 使用。 1) 如果不阅读所有三者的文档并了解它们的区别,我该如何做到这一点?

2) 在阅读了几篇文章后,我得出的结论是,make 是一个实用程序,其主要目的是将源代码构建为可执行文件或 DLL 或某种形式的输出,IDE 通常允许我们这样做。 Makefile 是向 make 实用程序提供指令的方法。是这样吗?

3) make 与构建代码的平台之间有什么关系?

4) 在依赖行(target:components)下发出的命令是shell命令?

提前致谢。

【问题讨论】:

    标签: build makefile


    【解决方案1】:
    1. 如果不阅读所有三者的文档并了解它们之间的差异,我该如何做到这一点?

      嗯,很可能,您将使用 GNU Make。我相信,区分为不同版本的Make编写的Makefile是比较简单的。

      AFAIK、GNU Make 和 BSD Make 有很多不同,至少在它们的语言语法上是这样。例如,在 GNU Make 中,一个典型的条件指令如下所示:

      ifdef VARIABLE
      # ...
      endif
      

      在 BSD 中 Make 它是这样的(虽然我不确定):

      .if
      # ...
      .endif
      

      另见:

    2. Makefile 是向 make 实用程序提供指令的方法。是这样吗?

      是的,完全正确。

    3. ma​​ke 与构建代码的平台之间有什么关系?

      Make 只是一个实用程序,用于跟踪要构建的工件之间的依赖关系,并以正确的顺序运行命令以满足这些依赖关系。 应该使用哪些确切的命令来完成任务取决于用户。因此,您也可以使用 Make 进行交叉编译。

    4. 在依赖行 (target : components) 下发出的命令是 shell 命令吗?

      是的,通常 Make 会生成一个执行指定配方的子 shell。

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2017-05-07
      • 1970-01-01
      • 2021-12-08
      相关资源
      最近更新 更多