0

系统规格:启用 devtoolset-8 的 Centos 7 (gcc 8.3.1)、cmake 3.14.6

我似乎有一个关于 gcc 版本控制的错误导致“类型错误”

我正在尝试构建一个 gitlab 项目(https://github.com/ColinKennedy/USD-Cookbook/tree/master/plugins/custom_resolver),该项目需要 Pixar 美元的内置版本。我已经成功构建了 USD 并运行以下命令来构建自定义解析器项目并为其提供 USD 的位置:

scl enable devtoolset-8 bash

USD_INSTALL_ROOT=/home/fernandos/Documents/USD cmake ..

make install

但是在 make install 期间会弹出此错误:

/home/fernandos/Documents/USD/include/pxr/base/tf/hash.h:44:6: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type
 std::enable_if_t<std::is_integral<T>::value>

如果我查看其他堆栈溢出帖子,此类型错误似乎表明可能由错误版本的 gcc 引起的错误。我知道这enable_if_t是在 c++14 中添加的,所以如果你有一个旧的编译器(例如 Centos 7 上的标准 gcc 4.8.1),它会抛出这个错误,因为它标准使用 c++11 编译。但是,我使用的是 devtoolset-8 环境,一切似乎都表明我正在使用 gcc 8.3.1 进行编译(我什至让 MakeFile 打印出版本)。那么,我怎么可能得到这个错误,gcc 8.3.1 不知道这个类型吗?

我还注意到错误源于我的 USD 构建:我不确定这是否重要,但我使用 gcc 6.3.1 构建它(它当然知道 enable_if_t 类型)。由于我对使用 cmake/make 在 linux 上构建相对较新,这会导致问题吗?

4

0 回答 0