我的dockerfile使用FROM gcc:5
,运行APT-GET更新并通过wget
安装CMAKE v3.9。我的顶级CMakeLists.txt
具有set(CMAKE_CXX_STANDARD 11)
,但这似乎并不能说服GCC使用C 11进行编译,因为我收到以下错误:
/ifeature.hpp:51:42: error: 'shared_ptr' in namespace 'std' does not name a template type
virtual float compare(const std::shared_ptr<IFeature>& feature) const = 0
^
我尝试使用libstdc++
,gnuc++11
等添加set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
的变体,但是编译器无法识别它们。我还尝试了add_compile_options(-std=c++11)
无济于事。我还尝试了APT-GET升级GCC,但这也没有帮助。
我在这里缺少什么?
以供将来参考,并且为了任何可能遇到此页面的人的利益,我应该像 @评论中提到的 @someprogrammer-dude更新,简单地包括 <memory>
解决了所示的错误在我的问题中。
鉴于我的原始开发环境与我的docker映像中的开发环境不同,并且代码是用不同的编译器编写的,我必须解决一些类似的问题(缺少文件)以满足gcc-v5
要求。