记录一点小的问题
根据官网要求安装的是gmock官网安装过程,但是make的时候是需要gtest的。
我前几天编译cartographer是能成功的,最近自己在学习gtest,不知道改错了什么,不管怎么编译cartographer都不能成功。
遇到两个问题
1.CMP0026
在下载github上的代码后,直接cmake,因为我的cmake版本是3.5,会有问题。有一个warning就是CMP0026。按照提示步骤上网查了,解决办法如下。
在根目录的CMakeLists.txt文件里添加这句话
cmake_policy(SET CMP0026 OLD)
前几行看起来是这样子的
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required (VERSION 2.8.7)
cmake_policy(SET CMP0026 OLD)
project(cartographer)
set(CARTOGRAPHER_MAJOR_VERSION 1)
set(CARTOGRAPHER_MINOR_VERSION 0)
set(CARTOGRAPHER_PATCH_VERSION 0)
set(CARTOGRAPHER_VERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}.${CARTOGRAPHER_PATCH_VERSION})
set(CARTOGRAPHER_SOVERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION})
之后在cmake是就不会有warning了。
2.gtest编译报错
比较匪夷所思的是在编译cartographer时,需要找到gtest的源码,而且还需要编译。不是可以直接链接到已有的gtest库吗。。
按照教程
sudo apt-get install google-mock
在/usr/src下会出现gmock的目录。但是看了gmock的CMakeLists发现还需要gtest。但是官网给出的步骤里没有gtest的安装。不知道为何。如果不安装,那么编译cartographer时一定会出错。
于是使用
sudo apt-get install libgtest-dev
会发现/usr/src多出了一个gtest文件夹,这样子才是正确的。
然而。。。这样子也不一定可以。反正我这次编译是失败了。
在打开cmake-gui以后去观察了cartographer的配置。其中有一句。
GMOCK_SRC_DIR
默认是会配置成/usr/src/gmock的。然而这样配置,我在编译时会死在%73的进度条上显示
[ 72%] Building CXX object gmock/CMakeFiles/gmock.dir/usr/src/gtest/src/gtest-all.cc.o
In file included from