Ubuntu16.04编译YARPL时gmock依赖不存在错误的解决求助
解决Ubuntu 16.04编译YARPL时CMake提示gmock不存在的问题
我之前在Ubuntu 16.04上编译依赖gmock的项目时也碰到过几乎一样的问题,大概率是以下几个原因之一,你可以按顺序尝试这些解决办法:
1. 检查是否遗漏了YARPL的Git子模块
很多GitHub项目会把依赖(比如gmock)作为Git子模块引入,如果你是从rsocket库中获取的YARPL,可能没拉取完整的子模块内容。回到YARPL的根目录,执行以下命令补全子模块:
git submodule update --init --recursive
这会自动拉取所有依赖的子模块资源,包括gmock。之后重新进入build目录,再运行一次CMake命令试试。
2. 手动指定gmock/gtest的路径给CMake
Ubuntu 16.04通过apt安装的libgmock-dev和libgtest-dev可能存在路径配置问题,导致CMake无法自动定位到它们。你可以先确认gmock的安装路径:
dpkg -L libgmock-dev
通常路径会是/usr/src/gmock,然后在运行CMake时手动指定路径参数:
cmake ../ -DCMAKE_BUILD_TYPE=DEBUG -DGMOCK_DIR=/usr/src/gmock -DGTEST_DIR=/usr/src/gtest
如果还是不行,尝试指定根目录参数:
cmake ../ -DCMAKE_BUILD_TYPE=DEBUG -DGTEST_ROOT=/usr/src/gtest -DGMOCK_ROOT=/usr/src/gmock
3. 源码编译安装适配版gmock/gtest
Ubuntu 16.04仓库里的gmock版本偏旧,且默认安装方式可能不匹配CMake的查找规则。你可以卸载现有包,然后从源码编译安装:
# 卸载现有包 sudo apt remove --purge libgmock-dev libgtest-dev sudo apt autoremove # 获取googletest源码包并编译安装 sudo apt-get install apt-src apt-src install libgtest-dev cd googletest-* mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local make -j$(nproc) sudo make install
安装完成后,重新运行CMake命令,此时CMake应该能自动找到标准路径下的gmock。
4. 修改YARPL的CMakeLists.txt适配Ubuntu 16.04
如果以上方法都无效,可以尝试调整YARPL根目录的CMakeLists.txt,修改gmock的查找逻辑:
找到文件中类似find_package(GMock REQUIRED)的代码块,替换为:
find_package(GTest REQUIRED) find_package(GMock REQUIRED) include_directories(${GTEST_INCLUDE_DIRS} ${GMOCK_INCLUDE_DIRS}) link_directories(${GTEST_LIBRARY_DIRS} ${GMOCK_LIBRARY_DIRS})
保存后重新运行CMake即可。
内容的提问来源于stack exchange,提问作者Manasvini Ganesh
相关产品推荐
相关产品推荐

