如何使用自制软件在 Mac OS X 上安装 GTest?

Posted

技术标签:

【中文标题】如何使用自制软件在 Mac OS X 上安装 GTest?【英文标题】:How to install GTest on Mac OS X with homebrew? 【发布时间】:2013-03-28 23:20:26 【问题描述】:

我正在尝试使用我的数据包管理器 Home Brew 安装 gtest,但没有它的存储库。我试图从 code.google 下载 gtest 但我不明白如何安装它,因为 cmakema​​ke 不能解决问题。

【问题讨论】:

【参考方案1】:

如果你想从源安装它最简单的方法如下

git clone https://github.com/google/googletest
cd googletest
cmake . -DCMAKE_BUILD_TYPE=Release 
make install

【讨论】:

【参考方案2】:

自制配方: brew install googletest

【讨论】:

【参考方案3】:

最新的 Homebrew 不再支持从 GitHub Gists 安装,因此@Kronuz 的解决方案不再有效。这是错误:

错误:从任意 URL 调用非校验和下载 gtest 公式文件被禁用!使用 'brew extract' 或 'brew create' 和 'brew tap-new' 在 GitHub 上的 tap 中创建公式文件。

现在可以使用以下命令安装 GoogleTest:

brew install web-eid/gtest/gtest

底层repository 是基于@Kronuz 的要点,感谢@Kronuz 的创建要点!

【讨论】:

【参考方案4】:

我刚刚使用 cmake 和 make 安装了 gtest。我可以向您展示我是如何手动安装 Google Test 的。并不复杂,按照步骤来即可。

    从https://github.com/google/googletest/archive/release-1.8.0.zip下载gtest文件并解压。
cd googletest-release-1.8.0/googletest/
mkdir bld
cd bld
cmake -DCMAKE_CXX_FLAGS=-std=c++11 ..
make
cp -a ../include/gtest /usr/local/include
cp -a *.a /usr/local/lib
    删除文件夹googletest-release-1.8.0release-1.8.0.zip

如果您想使用 google-test,请使用#include <gtest/gtest.h>

如果您想使用 Google Test 1.7.0 版,只需下载 release-1.7.0.zip 并在 2. 步骤中使用 cd googletest-release-1.7.0 而不是 cd googletest-release-1.8.0/googletest/。其余步骤相同。

我添加了标志-DCMAKE_CXX_FLAGS=-std=c++11 以将cmakec++11 一起使用。

尽情享受吧!


更新版本

从 v1.8.0 开始 gmock 包含在发布文件中。

以下是在 v1.8.0 - v1.10.0 中安装 gtestgmock 的一般步骤。 (请随意将 1.10.0 替换为您想要的版本。)

# download release file and extract files from it
curl -LOk https://github.com/google/googletest/archive/release-1.10.0.tar.gz
tar -zxvf release-1.10.0.tar.gz
rm release-1.10.0.tar.gz

cd googletest-release-1.10.0/
mkdir build
cd build
# build gtest and gmock
cmake -DCMAKE_CXX_FLAGS=-std=c++11 ..
make

# copy requisite c++ files and compiled files to correct directories
cp -a ../googletest/include/* /usr/local/include
cp -a ../googlemock/include/* /usr/local/include
find . -name "*.a" -exec cp -a  /usr/local/lib \;

# clean
cd ../..
rm -r googletest-release-1.10.0

如果您只想安装gtest 而不是gmock,您可以执行以下操作:

    删除命令cp -a ../googlemock/include/ /usr/local/include

    替换

     find . -name "*.a" -exec cp -a  /usr/local/lib \;
    

     find . -name "libgtest*.a" -exec cp -a  /usr/local/lib \;`
    

【讨论】:

这是更正确的答案! master时不时有问题,最好安装已发布的版本。【参考方案5】:

这是slund 答案的替代解决方案。 cmake .. 对我不起作用。

cd desktop
git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER="c++" -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" ../
make
sudo make install

【讨论】:

这是在 Mac OS 和 Ubuntu 上都适用于我的命令。在 Ubuntu 上,我收到一个错误“无法识别的 stdlib”,删除 -stdlib=libc++ 解决了这个问题。【参考方案6】:

ROS 存储库 (http://wiki.ros.org/kinetic/Installation/OSX/Homebrew/Source) 具有 gtest:

brew tap ros/deps
brew instal gtest

【讨论】:

【参考方案7】:

你可以用这个:

brew install --HEAD https://gist.githubusercontent.com/Kronuz/96ac10fbd8472eb1e7566d740c4034f8/raw/gtest.rb

【讨论】:

【参考方案8】:

如果您想要不使用 Homebrew 的最新版本:

git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake ..
make
make install

【讨论】:

可能听起来很蠢,但是你可以在安装后删除 git repo 吗? @MathieuChâteauvert 你可以。最后一个命令“make install”编译项目并将输出文件安装在系统库路径中,因此之后删除源代码不会改变任何内容。 除了提供No rule to make target 'install'make install之外的所有东西都有效 最好将标签安装在存储库的已发布部分下。如果主分支不完全正确,执行上述操作会导致错误!对我来说,版本 v1.8.1 有效。下载 tar 文件,解压缩,然后从第 3 行开始使用以结束上述答案。 如果make 失败.. 尝试cmake .. -DCMAKE_CXX_STANDARD=17 然后make。引用自:github.com/google/googletest/issues/1519#issuecomment-593001952【参考方案9】:

对于“为什么没有它的存储库?”这个问题。见related gtest FAQ question。但是,如果您愿意,您可以自己创建公式 - 有关详细信息,请参阅 this post(但不确定它是否适用于 1.6)。 但我建议您只安装 gtest:阅读readme 以获取详细说明。有几个简单的步骤: 下载源代码并将其提取到某个目录gtest_dir。 构建目标文件:

g++ -I$gtest_dir/include -I$gtest_dir -c $gtest_dir/src/gtest-all.cc
g++ -I$gtest_dir/include -I$gtest_dir -c $gtest_dir/src/gtest_main.cc

链接:

ar -rv libgtest.a gtest-all.o
ar -rv libgtest_main.a gtest_main.o

注意:如果你想构建支持 C++11 和 libc++ 的 gtest,你需要做一些额外的工作:

patch gtest-port.h 使用clang++ -std=c++11 -stdlib=libc++ 而不是g++ 构建

【讨论】:

这很烦人,因为包含的 Makefile(截至 2016 年 2 月 4 日)为 gtest_main 创建了一个库,而不是为 gtest-all 创建了一个库。另外,大多数教程都引用了名称 libgtest,除非您手动指定,否则该名称似乎不存在,如您的答案中所示。感谢您的提示!

以上是关于如何使用自制软件在 Mac OS X 上安装 GTest?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac OS 上使用自制软件将 postgresql 从 10.1 降级到 9.6 [关闭]

在 Mac OS X 上使用 pip 安装 pyopencv

在 Mac OS X 上组装项目时出现“没有这样的指令”错误

Ruby gem rmagick 不会安装在 Mac OS X 上

Mac OS X 上的 GCC 标志 -Os 来自哪里?

sh 使用自制软件将Mac Os X的php版本更新为php 7.1。包括curl和mcrypt