12
votes

Comment compiler Googletest sur Windows à l'aide de Mingw avec MSYS?

Mon besoin est simple. Je dois compiler et utiliser GoogletTest sur Windows à l'aide de Mingw avec des HSYS. Quelqu'un a-t-il une expérience de cela?

Merci pour des réponses.


2 commentaires

Veuillez décrire ce qui se passe mal.


J'ai des progrès. Il semble qu'il ne puisse pas installer sans python que je n'ai pas. Je lie de le résoudre maintenant.


6 Réponses :


16
votes

Cela m'a pris un peu de temps mais je l'ai compris. Voici le guide pour tous ceux qui font face au même problème.

Pour pouvoir compiler Googletest sur Windows Suivez ces instructions:

  1. Je suppose que vous avez MINGW avec des msys istaild.

  2. Téléchargez et installez CMAKE à partir du site officiel http://www.cmake.org/ . Utilisez l'installateur Win32 version. Une fois que vous avez terminé le processus d'installation, copiez des fichiers exécutables de "xxx / cmake / bin" à "xxx / minwg / bin".

  3. Téléchargez et installez Python à partir de http://www.python.org/ . Encore une fois, le programme d'installation Windows fait le travail bien. Une fois que vous avez terminé le processus d'installation, copiez le "python.exe" Former le dossier Python à "xxx / minwg / bin".

  4. Téléchargez la dernière stable Googletest de http://code.google.com/p/googletest/ et décompressez-le dans un dossier.

  5. Exécutez le terminal MSYS et exécutez les commandes suivantes. XXX

  6. Si vous avez des erreurs de compilation de Pthread, suivez Ces instructions.

  7. Copiez le dossier Inclure "xxx / gtest-x.x.x / include" dans votre GCC MINGW include. Copiez les fichiers de la bibliothèque "xxx / gtest-x.x.x / *. A" dans votre MINGW GCC LIB.

  8. Lorsque vous compilez des tests, ajoutez "-LGTest" paramètre à GCC.

    edit Les commentateurs ont raison. Le fait de faire face aux exécutables a fonctionné pour moi mais généraliste ce n'est pas une bonne pratique. Essayez d'utiliser un lien symbolique à la place.


2 commentaires

Pourquoi copier et ne pas symbolder ces exécutables?


En fait, les deux cumakes et Python ne sont pas construits de manière statique, alors ils ne fonctionnent pas tous les deux (écrasement et boucle infinie) lorsqu'ils sont appelés depuis MSYS Shell.



1
votes

Autre alternatif, il est également possible de construire GoogletuTest à l'aide de la marque MSYS / Mingw habituelle.

Voici ma solution alternative:

  1. Assurez-vous que MSYS / MINGW est installé sur votre Windows et l'environnement de chemin d'accès est réglé sur celui-ci

  2. Ouvrez une fenêtre CMD - Vous pouvez définir le chemin explicitement ici aussi bien

  3. CD sur le répertoire GoogletTest décompressé

  4. appel Configurez avec SH (partie de MSYS): SH Configurer

  5. appel faire -> libgtest.a doit être construit. Il est placé dans votre répertoire GoogletSTest LIB / .LIBS SubDirectory

  6. Voir Readme de Googletest de la manière d'intégrer le libgtest.a à votre système. Voir également googletest Primer dans le Googletest Wiki de comment compiler. Spécifiez également le chemin de la bibliothèque pour GCC -L /lib/.libs et ajoutez -Lgtest pour créer un lien avec votre projet d'exécutable de test.

  7. Lorsque vous utilisez assert_death macro pour rechercher des affirmations dans votre code testé (ce qui signifie affirme dans votre liberté ou votre application, pas dans Googletest), appelez SETERRORMODE - Exemple Main: XXX


0 commentaires

1
votes

Vous n'avez pas besoin de copier les fichiers binaires aussi longtemps que vous les avez sur votre chemin. Installez Python et Cmake. Testez-les dans votre MSYS (console MINGW)

cd make
make
./sample1_unittest.exe


0 commentaires

3
votes

Pour construire libgtest.a sans cmake / python, mais uniquement en utilisant Mingw Gake, GTEST a maintenant un dossier "make" avec un vieux maquillage uni.

  1. Assurez-vous que MINGW \ BIN est sur le chemin (essayez d'exécuter 'g ++' ou quelque chose).
  2. Entrez le dossier GTEST 'GoogletSest \ FAKE' FAITE 'et RUN' FAITE '.
  3. Pour tester, exécuter "Sample1_unittest" (la sortie de test d'échantillon GTEST doit apparaître).
  4. Pour générer la bibliothèque 'libgtest.a', courir 'ar -rv libgtest.a gtest-all.o'

    La bibliothèque créée est une bibliothèque statique complète sans la DLL générée.

    qui devrait être tout.

    D'ailleurs, cela fonctionne également pour le bâtiment GoogleMock, entrez simplement le dossier GoogleMock au lieu de Googletest et suivez la même procédure.


1 commentaires

Merci @ Jesper-Matthiesen ça a fonctionné. Au cas où une personne est confrontée à une erreur de Ld.exe n'a pas pu trouver LPThread. Essayez d'exécuter Mingw-Get Installer libpthreadgc-dev comme mentionné dans le commentaire de Link . Merci



2
votes

du readme de https://github.com/google/googletest/tree / maître / googletest : Lors de la construction de Google Test en tant que projet autonome, le flux de travail typique commence. avec: xxx

Si vous souhaitez créer des échantillons de Google Test, vous devez remplacer la dernière commande. avec xxx


0 commentaires

0
votes

La question a été posée en 2011 et la réponse à la plupart des voix a également répondu la même année. Donc, une nouvelle réponse améliorerait l'efficacité de la question.

Outils dont vous avez besoin et j'ai testé avec: strong> p>

MINGW64 8.0.2 P>

GOOGLETTEST Code source GitHub Repo Branch 1.10.0 P>

CUPE 3.20.4 p>

et Windows10 p>

étapes forte> p>

  • Installez le MINGW64 en double-cliquant et choisi le chemin qui fait ne pas avoir de place entre les noms de répertoires par exemple "Fichiers de programme" P> li>

  • Paramètres ouverts des fenêtres puis recherchez des variables d'environnement et oepn la boîte de dialogue pour éditer la chemin strong> em> variable d'environnement p> li>

  • Ajoutez le nom du répertoire Mingw64 / bin dans l'environnement de chemin Windows Variable E.G. c: \ users [nom d'utilisateur] \ mingw64 \ bin em> (remplacer [nom d'utilisateur] Avec votre nom d'utilisateur par ex. Michael ou Lee, etc.) p> li>

  • Installez Cmake. Il est double-cliquez sur la procédure d'installation. Assurez-vous que c'est Le chemin de répertoire bin est ajouté dans la chemin strong> em> variable d'environnement. Il serait installé dans C: / Program Files /... li>

  • télécharger Googletest Repo extraire et créer un répertoire de construction dans le répertoire extrait. p> li>

  • exécuter les commandes suivantes p>

    CD CD $ P>

    $ cmake .. -g "Mingw Makefiles" P>

    $ mingw32-make.exe p> li>

  • copier les quatre bibliothèques statiques (*. A) du répertoire de construction p> li> ul>

    [ex: c: \ utilisateurs [nom d'utilisateur] \ Sourcecodes \ googletest-maître \ build \ lib] p> blockQuote>

    dans la lib de mingw64 p>

    [ex: c: \ utilisateurs [Nom d'utilisateur] \ Mingw64 \ x86_64-W64-MINGW32 \ LIB] P> blockQuote>

    • Allez sur le repo extrait GoogletSt, accédez à li> ul>

      [ex C: \ Utilisateurs [Nom d'utilisateur] \ Sourcecodes \ GoogletSt-Master \ Googletest \ Incluez \ GTEST] P> blockQuote>

      Copiez que tout le répertoire GTEST et copie dans le dossier P>

      C: \ users [Nom d'utilisateur] \ Mingw64 \ LIB \ GCC \ x86_64-W64-MINGW32 \ 8.1.0 \ Inclure p> BlockQuote>

      Vous avez terminé pour aller. Vous pouvez créer et relier Googltest avec votre projet C ++. Je colle aussi un échantillon CMAKELIST.TXT P>

      cmake_minimum_required(VERSION 3.12)
      
      project(ProjectName VERSION 1.0.0 LANGUAGES CXX)
          
      include_directories(include)
      
      set(SOURCES src/library.cpp include/library.h)
      add_executable(libabc ${SOURCES})
      
      #############
      ## Testing ##
      #############
      
      enable_testing()
      find_library(GTest gtest)
      
      add_executable (unitTest test/unit_test.cpp)
      target_link_libraries (unitTest gtest gtest_main)
      add_test(AllFactTest unitTest)
      


0 commentaires