我在网上到处都看,似乎无法找到解决这个问题的方法。我在makefile和env文件中尝试了-std = c ++ 11,-std = c ++ 0x和-std = c ++ 1y标志,所有这些都对以下错误没有影响:
'to_string' is not a member of 'std'
range based 'for' loops are not allowed in C++98 mode
我正在尝试运行构建在RepastHPC之上的C ++程序,该程序在Ubuntu 14.04 VirtualBox VM上运行。 RepastHPC本身的makefile和C ++代码的env文件都包含该标志。 env文件用于C ++代码的makefile中,因此不会遗漏它。
# Repast HPC
# ENVIRONMENT DEFINITIONS
MPICXX=/home/repasthpc/repast_hpc-2.1.0/INSTALLATION/mpich-3.1.4/src/env/mpicxx
-std=c++11 -D USE_CPP11 -stdlib=libc++
BOOST_INCLUDE=-I/usr/local/include/
BOOST_LIB_DIR=-L/usr/local/lib/
BOOST_LIBS=-lboost_mpi-mt-s -lboost_serialization-mt-s -lboost_system-mt-s -lboost_filesystem-mt-s
REPAST_HPC_INCLUDE=-I/usr/local/include/
REPAST_HPC_LIB_DIR=-L/usr/local/lib/
REPAST_HPC_LIB=-lrepast_hpc-2.1
TISSUE_INCLUDE=-I/Users/repasthpc/Desktop/hpcmodel/angiogenesis_osteogenesis_simulator/src/
------------------------------------------------------------
# Repast HPC
# MANUAL BUILD MAKEFILE
# VARIABLES (Supply values for these; for definitions and examples, see INSTALL)
CXX=mpicxx -std=c++11 -D USE_CPP11
CXXLD=mpicxx
BOOST_INCLUDE_DIR=/usr/local/include
BOOST_LIB_DIR=/usr/local/lib
BOOST_INFIX=-mt
NETCDF_INCLUDE_DIR=/usr/local/include
NETCDF_LIB_DIR=/usr/local/lib
CURL_INCLUDE_DIR=/usr/local/include
CURL_LIB_DIR=/usr/local/lib
**这不是makefile的结尾,但它是相关部分的结尾**
有什么想法?我很困惑。
谢谢! 雷切
答案 0 :(得分:0)
这个Makefile只有几个问题:
1) setAction()
不符合您的意图。
正确的方法是
CXX=mpicxx
这转换为:
CXX=$(MPICXX)
2) 另请注意,CXX=/home/repasthpc/repast_hpc-2.1.0/INSTALLATION/mpich3.1.4/src/env/mpicxx
部分未包含在上述CXX中。这是因为我们需要'\'来告诉Make还有另一条线。
所以试试这个:
-std=c++11 -D USE_CPP11 -stdlib=libc++