使用不同的编译器并排安装相同的软件/版本

时间:2016-12-12 09:06:43

标签: homebrew

为了开发/测试我们的CFD代码,我喜欢经常在Clang(严格/警告)和GCC(性能)之间切换,但是这需要一些依赖性(例如NetCDF)与相同的编译器

我知道Homebrew可以选择在它们之间安装多个版本的软件side-by-sideswitch,但可以使用相同的软件版本执行类似的操作,但使用不同的编译器进行编译(设置HOMEBREW_CCHOMEBREW_CXX)?

像(一厢情愿的想法,以某种方式安装NetCDF与Clang和GCC ):

brew switch netcdf 4.3.3-gcc 
brew switch netcdf 4.3.3-clang 

1 个答案:

答案 0 :(得分:2)

我认为只有当您明确拥有不同的版本号时才有可能这样,例如您使用的示例" 4.3.3-gcc"和" 4.3.3-clang"。

如果版本号相同,则构建版本没有区别,brew不能区分它们。

我也不会这样做。

  1. 通过以多种不同方式编译同一个库,您现在开始陷入依赖性噩梦。
  2. 依赖冲突。因为即使你换掉" netcdf",你怎么知道你也交换了所有它的依赖?如果它们没有使用相同的编译器进行编译,则可能会发生错误,例如,由于调用的方式不同或由于在一个编译器中为应用程序和它的依赖关系启用了选项而导致的冲突39;在另一个版本中启用。
  3. 我不建议这样做,这太麻烦了。

    但是,如果你真的需要两个版本(例如用于测试),那么我会将它们构建到系统路径之外的隔离文件夹树中,并在那里对它们进行任何测试。 Brew不是解决此问题的最佳方法,因为这是一个非标准的用例。