Target需要语言方言“CXX17”(带有编译器扩展名),但CMake不知道用于启用它的编译标志

问题描述:

所以我一直试图将<filesystem>包含到我的项目中,这似乎是一个更大问题比我想象的要多。 <filesystem>应该是C++ 17的一部分,我需要将该定义添加到我的CMakeList中。Target需要语言方言“CXX17”(带有编译器扩展名),但CMake不知道用于启用它的编译标志

我的根CmakeLists是这样的:

我在其中添加了C++ 17的定义,但是当我编译我的系统,我得到这个错误:

make 
“InsrcCMAKELIST” 
“InincludeCMAKELIST” 
“IndatabaseCMAKELIST” 
“InmatchCMAKELIST” 
“InrecordCMAKELIST” 
“InspectogramCMAKELIST” 
/home/lamda/soundcloud/src/include/spectogram/base/base.h 
“outspectogramCMAKELIST” 
-- Configuring done 
CMake Error in src/CMakeLists.txt: 
    Target "cmakeDemo" requires the language dialect "CXX17" (with compiler 
    extensions), but CMake does not know the compile flags to use to enable it. 


-- Generating done 
-- Build files have been written to: /home/lamda/soundcloud/build 
make: *** [cmake_check_build_system] Error 1 

但不知何故是不是愿意使用C++ 17,所以我可以使用filesystem库?为什么?

+2

您使用的是哪个版本的cmake? 17作为'CMAKE_CXX_STANDARD'的值只支持从v3.8 – VTT

+0

我使用的是cmake 3.9.6 ..我更新了cmake因为这个... 但是这个解决方案显然也是升级gcc和g ++ – Lamda

+0

http://ovenproof-linux.blogspot.dk/2016/09/upgrade-gcc-and-g-in-ubuntu.html – Lamda

正如前面提到的C++ 17只支持cmake版本> 3.8,所以我不得不更新它。

但我的问题是我的gcc和g ++不支持它,所以我不得不更新那些,然后我做了。

我跟着这个guide