找出生成文件的预期目标系统

Posted

技术标签:

【中文标题】找出生成文件的预期目标系统【英文标题】: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命令?

提前致谢。

【问题讨论】:

【参考方案1】:

    如果不阅读所有三者的文档并了解它们之间的差异,我该如何做到这一点?

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

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

    ifdef VARIABLE
    # ...
    endif
    

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

    .if
    # ...
    .endif
    

    另见:

    How similar/different are gnu make, microsoft nmake and posix standard make? Use the same makefile for make (Linux) and nmake(Windows) BSD Make and GNU Make compatible makefile

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

    是的,完全正确。

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

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

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

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

【讨论】:

以上是关于找出生成文件的预期目标系统的主要内容,如果未能解决你的问题,请参考以下文章

用make生成c源的目标文件时如何生成依赖文件

学习软件测试:软件测试是对程序能够按预期运行建立起一种信心。

主机文件在 OS X 中无法按预期工作

loadrunner Analysis 分析场景

软件测试理论

CMake基础教程(30)CMake构建系统概览