【问题标题】:C++-based make system基于C++的make系统
【发布时间】:2011-06-28 04:22:06
【问题描述】:

是否有任何不使用 DSL 但实际上使用 C++ 作为构建语言的构建系统?

【问题讨论】:

  • 您是在问是否有任何 c++ 编译器是用 c++ 编写的?我不知道有什么特别的,但这并不是不可想象的。
  • 对不起。不,我要求一个像 make 这样的构建系统,除了构建语言是 C++ itself (不是像 python 或一些自定义递归语言这样的脚本语言,只是实际的 C++)。因此,例如,一个 .cpp 文件将包含所有构建规则,可能作为一个对象,然后您只需编译 .cpp 文件,运行它,它就会构建项目。
  • 为什么不自己制作 Python 脚本?
  • @Ken Wayne Vanderlinde - 我想说 clang++ 算作用 C++ 编写的 C++ 编译器。 :D

标签: c++ build makefile


【解决方案1】:

Yo Dawg,听说你喜欢 C++,所以我在你的构建系统中加入了 C++,所以你必须先编译再编译。

【讨论】:

  • 对于那些一直将此答案标记为不是答案的人,我需要一个理由。尽管它很古怪,但它实际上似乎回答了所提出的问题。
  • 那么你到底添加了 C++ 是什么?也许一个网站链接会很好。
【解决方案2】:

我编写了一个构建系统,在我的 Python 项目中使用,名为 pybake。它的设计比 make 更聪明一点,魔法更少。该构建也是在 Python 中定义的,因此可以重用现有语言,而不是为此目的生成新的 DSL。这是正在使用的example

【讨论】:

  • 酷。刚刚用 C++ 完成了我自己的工作,到目前为止它在 linux 和 windows 目标上都可以正常工作。刚刚完成了生成项目文件的部分。它也有几个优点。首先,它是debuggable(有多少make脚本很容易调试?),其次我可以在它上面使用intellisense,所以它实际上比输入一堆cmake文件更快更灵活。不像其他 make 系统那样功能齐全,但它现在适合我的需求。
【解决方案3】:

没有一个受欢迎的,如果有人疯狂到甚至写一个。 C++ 将是一种非常笨拙的语言。

如果您想创建一个,请选择一种语言,例如 Python 或 Lua,以便使用流行的东西,而不是发明新的 DSL。

【讨论】:

  • 大多数 DSL 不都是新发明吗?这不就是 DSL 的目的吗?
  • 好处是您的项目不需要任何构建系统。它只会引导自己。
  • @jjacksonRIAB:如果你有一个可用的 C++ 编译器(你需要编译你的初始 C++),那么你很可能没有某种形式的 make 或命令 shell 可用。使用其中任何一个并处理其中的平台差异将比用 C++ 编写构建系统容易得多。
  • 是的,我想到了这个。我并不是说它会非常有用或实用。更多的是它会有点有趣。
【解决方案4】:

您是否询问是否有任何构建系统,例如 Make 或 Ant,它们使用 C++ 代码作为指令而不是专门的命令?虽然许多高级语言都有这样的系统,但我所知道的 C++ 中没有任何系统。当然不是流行的。这可能是因为 C++ 是一种编译语言,而不是一种易于解析的语言。这使得它不太适合本质上是轻量级脚本任务。

【讨论】:

  • 嗯,我知道所有流行的构建语言,我目前使用 CMake。我真的不明白为什么需要一个单独的解析器。基本上我的意思是:g++ Makefile.cpp,它使用 c++ 作为构建语言,生成一个可执行文件,然后你运行它并在 Makefile.cpp 文件中构建所有内容,而不是使用单独的语言 - 它只是引导自身关闭该文件以及它可以包含的任何其他文件。
【解决方案5】:

那里可能有 C++ 代码,但如果你的意思是你必须编写一个 C++ 程序并编译它然后运行它来构建一个不同的源代码树,我认为这在事情的方案中不会真正起作用.你会用什么来构建你的构建脚本?它一直在继续。

脚本语言背后的编译器和命令通常用 C 或 C++ 编写。

【讨论】:

    【解决方案6】:

    由于 C++ 已编译,这会给您带来需要为基于 C++ 的构建系统构建系统的问题。我不知道有任何基于 C++ 的构建系统,并且会惊讶地找到它。对于 Python 等解释型语言,引导不是问题(例如,您会发现 scons)。

    不过,如果您正在寻找比 Make 更好的东西,请查看 CMake。虽然有些过时,但您可能会发现 C++ Project Template 作为创建基于 CMake 的项目的示例很有帮助。

    【讨论】:

    • "构建系统需要构建系统的问题" 为什么这真的是个问题?例如。 Autotools 是使用 make 构建的。
    • 我没用过Scons(我用过nmake、make、cmake、qmake),但你不是必须下载Python才能自己引导吗?
    • @jjacksonRIAB,不,scons 用于安装 Python 包......不是 Python 本身的原始安装。此外,UNIX 系统通常预装 Python。
    • @kotlinksi,是的,你可以为你的构建系统使用不同的构建系统,尽管那样事情变得有点荒谬了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多