【问题标题】:How to code a script to create a makefile如何编写脚本来创建生成文件
【发布时间】:2016-06-27 13:28:05
【问题描述】:

我是新的一年,我需要一些答案。我在网上搜索了一些答案,但没有发现任何有用的东西。我正在搜索的是一个shell程序,当你执行它时,创建一个带有二进制名称的Makefile,如:

./automakefile.sh 你好。

将为您构建一个二进制名称为 hello 的 Makefile。

我希望你们能帮助我,我指望你们

【问题讨论】:

  • 没有这样的魔法。你可能会想到automake,但这并不是那么神奇。
  • “创建一个 Makefile”并不是那么简单,一个 Makefile 有一些你必须提供给你的脚本的信息,无论是在代码中还是作为参数,例如什么是源或目标的依赖,什么是编译器、它的参数、链接器等。编写这样的脚本或使用一些现有工具(CMake、automake 等)由你决定,但他们也需要一些有关 Makefile 内容的信息。跨度>
  • 如果就这么简单,那么您可以使用通用 Makefile 并使用环境变量作为源代码和二进制名称。

标签: shell makefile


【解决方案1】:

不幸的是,没有这样的神奇命令。如果有的话,我们就不需要 Makefiles 开始,因为这个魔法很可能已经被合并到编译器中。

没有这样的命令有几个原因。

  1. 给定一个随机的二进制文件,你通常不能说它是用什么编程语言编写的。

  2. 您也无法分辨出用于编译二进制文件的源文件,或者它们在文件层次结构中的位置(不仅仅是它们的位置 位于上次编译二进制文件时,可能在另一个系统上)。

  3. 您不知道源代码文件之间的依赖关系。 Makefiles 主要用于跟踪这些(和编译器标志等),因此在大型项目中更改单个源文件不会触发所有内容的重新编译。

  4. 您不知道要使用什么编译器,也不知道要传递给它的标志。这是 Makefile 包含的另一件事。

有一些构建工具可用于更轻松地创建 Makefile,并使它们在不同架构的系统之间可移植(Makefile 不一定是程序,这取决于程序员)。一组这样的工具是GNU's autotools,另一组是CMake,我相信还有其他的,但我使用的是这些。

现在你面临另一个但类似的问题,那就是你仍然需要学习语法,并写,e你的Makefile.am和@ 987654324@ 文件(用于 GNU 工具)或您的 CMakeLists.txt 文件(用于 CMake)。

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2022-01-01
    • 2022-12-15
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多