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

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

【问题讨论】:

    标签: macos repository installation homebrew googletest


    【解决方案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 的。并不复杂,按照步骤来即可。

          1. 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
          
          1. 删除文件夹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,您可以执行以下操作:

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

          2. 替换

             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,你需要做一些额外的工作:

              【讨论】:

              • 这很烦人,因为包含的 Makefile(截至 2016 年 2 月 4 日)为 gtest_main 创建了一个库,而不是为 gtest-all 创建了一个库。另外,大多数教程都引用了名称 libgtest,除非您手动指定,否则该名称似乎不存在,如您的答案中所示。感谢您的提示!
              猜你喜欢
              • 1970-01-01
              • 2017-05-24
              • 2016-01-24
              • 1970-01-01
              • 1970-01-01
              • 2018-02-27
              • 1970-01-01
              • 2018-06-25
              • 2013-10-14
              相关资源
              最近更新 更多