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

Bar*_*art 5 homebrew

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

我知道Homebrew可以选择并排安装多个版本的软件并在它们之间切换,但是可以使用相同的软件版本做类似的事情,但是使用不同的编译器编译(通过设置HOMEBREW_CCHOMEBREW_CXX)?

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

brew switch netcdf 4.3.3-gcc 
brew switch netcdf 4.3.3-clang 
Run Code Online (Sandbox Code Playgroud)

Jos*_*man 2

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

如果版本号相同,则构建没有差异,brew 无法区分它们。

我也不会这样做。

  1. 通过以多种不同的方式编译同一个库,您现在开始陷入依赖噩梦。
  2. 依赖冲突。因为即使你换掉了“netcdf”,你怎么知道你也换掉了它的所有依赖项?如果它们不是使用相同的编译器进行编译,则可能会发生不好的事情,例如,由于调用方式的差异或由于在一个编译器中为应用程序及其依赖项启用了在另一个编译器中未启用的选项,可能会出现冲突建造。

我不建议这样做,太麻烦了。

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