更改默认CMake版本,Ubuntu 14.04

时间:2015-04-14 20:23:03

标签: ubuntu cmake catkin

据我所知,我需要至少使用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?

1 个答案:

答案 0 :(得分:2)

这里有两件事:

  1. 根据catkin_make文件,它不会将shell环境复制到python子进程' cmake'调用。
  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版本,但我不确定这是否能解决你原来的问题,导致我们......

    1. 如果您在构建catkin时只是尝试使用C ++ 11,那么您也可以将-std=c++11编译器标志添加到CMAKE_CXX_FLAGS
    2. 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")