我正试图按照OpenNN的指令构建这里库。但之后
make opennn我得到以下输出(未满):
[2%] Built target tinyxml2
[4%] Building CXX object opennn/CMakeFiles/opennn.dir/variables.cpp.o
In file included from /home/wolfgang/Downloads/OpenNN/opennn/variables.h:32:0,
from /home/wolfgang/Downloads/OpenNN/opennn/variables.cpp:16:
/home/wolfgang/Downloads/OpenNN/opennn/vector.h: In member function ‘bool OpenNN::Vector<T>::Lillieforts_normality_test() const’:
/home/wolfgang/Downloads/OpenNN/opennn/vector.h:1144:20: error: ‘erfc’ is not a member of ‘std’
Fx = 0.5 * std::erfc((mean - (*this)[i])/(standard_deviation*std::sqrt(2)));以上输出以
make[3]: *** [opennn/CMakeFiles/opennn.dir/variables.cpp.o] Error 1
make[2]: *** [opennn/CMakeFiles/opennn.dir/all] Error 2
make[1]: *** [opennn/CMakeFiles/opennn.dir/rule] Error 2
make: *** [opennn] Error 2我想我应该使用-std=c++11或其他什么的,但我不知道具体如何使用。我试着增加这一行
CXXFLAGS += -std=c++11但是它不起作用。
我对cmake和make一无所知。但是,这些错误是由于与旧的c++xx不兼容造成的。
发布于 2018-01-22 20:34:36
删除std::,尝试如下:
Fx = 0.5 * erfc((mean - (*this)[i])/(standard_deviation*std::sqrt(2)));发布于 2018-02-14 10:00:45
解决方案A-更新CMake
您至少需要3.1版的CMake,所以如果您的版本较低,则需要对其进行更新。
我在Ubuntu14.04上遇到了这个问题,它默认使用版本2.8 (包名为"cmake");卸载它并安装"cmake3“(在Ubuntu14.04上,"cmake3”包含CMake 3.5)。
因此,对于Ubuntu14.04,正式文档包含错误,应该将"sudo apt-get install cmake“替换为"sudo apt-get install cmake3";但请注意,这可能不适用于不同(较新的)系统。
解决方案B-编辑CMakeLists
这适用于较早的CMake版本(至少2.6)。
更新CMakeLists.txt源代码存储库根目录中的"set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")“文件;在"set (CMAKE_CXX_STANDARD 11)”行下添加“set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")”行(应该是第5行)。
解释
OpenNN使用"set (CMAKE_CXX_STANDARD 11)“来告诉CMake应该使用C++11标准。然而,这是支持的,因为CMake 3.1.老版本的CMake没有注意到这个问题,因为OpenNN的CMakeLists的第一行是"cmake_minimum_required(VERSION 2.6)“,上面写着”最小版本为2.6“。这允许在CMake上运行CMake版本,CMake版本不支持所有已使用的特性(通过OpenNN),这导致了这个问题。
第二个解决方案(解决方案B)只是为编译器手动添加所需的"-std=c++11“标志。
https://stackoverflow.com/questions/46363851
复制相似问题