据我所知,我需要至少使用CMake 3.1才能使用C ++ 11。 Ubuntu 14.04附带2.8.x.
我按照指南建议将CMake安装到/opt
,因此我将CMake安装到/opt/cmake-3.2.1-Linux-x86_64
并将/opt/cmake-3.2.1-Linux-x86_64/bin
添加到.bashrc中的路径(作为第一个元素)。
如果我尝试apt-get remove cmake
这个过程不仅要删除CMake而且还要删除ROS(是的,我已经被ubuntu: upgrading software (cmake) - version disambiguation (local compile)拦截了,只是得出结论我无法做到使用答案)
cmake --version
的结果:
cmake version 3.2.1
将最低要求版本设置为3.1并在同一终端中运行catkin_make
会产生:
CMake 3.1 or higher is required. You are running version 2.8.12.2
如何让catkin
使用新的(/正确)版本的CMake?
答案 0 :(得分:2)
这里有两件事:
catkin_make :
...
if args.no_color:
run_command(cmd, build_path)
else:
run_command_colorized(cmd, build_path)
builder.py :
def run_command(cmd, cwd, quiet=False, colorize=False, add_env=None):
...
env = None
if add_env:
env = copy.copy(os.environ)
env.update(add_env)
try:
proc = subprocess.Popen(
cmd, cwd=cwd, shell=False,
stdout=stdout_pipe, stderr=stderr_pipe,
env=env
)
您可以修改catkin_make脚本中的相应行以正确传递add_env的空字典,并且它应该尝试将环境复制到生成的子流程:
if args.no_color:
run_command(cmd, build_path, add_env={})
else:
run_command_colorized(cmd, build_path, add_env={})
这应该修改路径并让它找到合适的cmake版本,但我不确定这是否能解决你原来的问题,导致我们......
-std=c++11
编译器标志添加到CMAKE_CXX_FLAGS
: catkin_make --cmake-flags "-DCMAKE_CXX_FLAGS=\${CMAKE_CXX_FLAGS};-std=c++11"
或修改CMakeLists.txt:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")