将编译器编译为外部项目并使用它?

时间:2016-08-27 06:52:11

标签: cmake

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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