【问题标题】:Compile a compiler as an external project and use it?将编译器编译为外部项目并使用它?
【发布时间】:2016-08-28 06:23:27
【问题描述】:

我必须为一个项目构建一个稍微打过补丁的 GCC 版本,然后用它编译项目的其余部分。我想知道最好的方法是什么。我目前正在使用ExternalProject_Add 将编译器构建为其他二进制文件的依赖项,但我不知道如何为项目的一部分更改编译器。

【问题讨论】:

标签: cmake


【解决方案1】:

您最好的选择可能是将事物构建为超级构建。顶级项目将有两个使用ExternalProject_Add 构建的子项目。编译器将是第一个子项目,第二个将是您的实际项目,然后可以通过使您的实际子项目依赖于编译器子项目来利用编译器。

第二种选择是discussed here,您的实际项目仍然是顶级项目,但编译器构建为通过external_process() 调用的子构建。我已经在现实世界的情况下使用了这种方法,虽然它确实有效,但如果我有选择的话,我个人仍然会选择超级构建方法,因为它更简洁,也许其他开发人员更容易理解。

最后,考虑一下hunter 之类的东西是否能够为您构建编译器。根据您需要修补 GCC 的内容/方式,这可能是也可能不是最有吸引力的方法。

【讨论】:

    【解决方案2】:

    我会使用两个 CMake 项目,一个构建您的编译器,另一个使用您构建的编译器构建您的实际项目。 CMake 编译器是 CMake 的重要组成部分,改变就是自找麻烦。

    如果您希望将所有内容都放在一个项目中,您可以使用add_custom_command 调用您的实际项目并调用一个子文件夹。作为用户,这会更令人惊讶,但可能会带来更好的集成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2014-07-03
      • 2012-11-17
      相关资源
      最近更新 更多