target_compile_features The compiler feature "cxx_variable_templates" is not known to CXX compiler "GNU" version 4.8.4. -- Configuring incomplete, errors occurred! See also "/home/slam-learn/projects/Catch2-devel/build/CMakeFiles/CMakeOutput.log". See also "/home/slam-learn/projects/Catch2-devel/build/CMakeFiles/CMakeError.log".
时间: 2023-07-18 07:41:40 浏览: 350
这个错误提示意味着您的 C++ 编译器(GNU 4.8.4)不支持 C++ 14 中的变量模板(cxx_variable_templates)特性,而 Catch2 源代码中使用了这个特性。因此需要升级您的 C++ 编译器或者使用不依赖该特性的 Catch2 版本。
解决方法有以下几种:
1. 升级 C++ 编译器:升级到支持 C++14 的编译器,比如 GCC 5 或以上版本,或者 Clang 3.4 或以上版本。
2. 切换 Catch2 版本:如果您不想升级编译器,可以尝试切换到不依赖变量模板特性的 Catch2 版本。您可以在 Catch2 的 GitHub 仓库中查找早期版本的发布,选择一个适合您的版本。
3. 禁用变量模板特性:如果您不想切换 Catch2 版本,可以尝试禁用变量模板特性。您可以在 Catch2 的 CMakeLists.txt 文件中添加以下行代码,禁用变量模板特性:
```
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
```
请注意,禁用变量模板特性可能会影响 Catch2 的性能和功能,因此建议您升级编译器或者切换到不依赖该特性的 Catch2 版本。
相关问题
CMake Error at src/CMakeLists.txt:355 (target_compile_features): target_compile_features The compiler feature "cxx_variable_templates" is not known to CXX compiler "GNU" version 4.8.4. -- Configuring incomplete, errors occurred!
这个错误是由于你的编译器不支持 C++17 的变量模板特性导致的。你需要使用支持该特性的编译器或者禁用该特性。如果你使用的是 GCC 编译器,可以尝试升级到版本 5.4 或者更高版本,或者在 CMakeLists.txt 文件中添加以下代码来禁用该特性:
```cmake
target_compile_options(your_target_name PRIVATE -fno-implicit-templates)
```
这将禁止编译器隐式地生成变量模板实例化代码。
CMake Error at src/CMakeLists.txt:355 (target_compile_features): target_compile_features The compiler feature "cxx_variable_templates" is not known to CXX compiler
这个错误是由于C++编译器不支持`cxx_variable_templates`这个编译特性导致的。您需要检查您使用的C++编译器的版本和支持的特性,然后在CMakeLists.txt文件中将这个特性从`target_compile_features`中移除,或者升级您的C++编译器以支持这个特性。您可以尝试将 `cxx_variable_templates` 替换为C++标准版本,例如 `cxx_std_11` 或 `cxx_std_14`。
阅读全文