Partage
  • Partager sur Facebook
  • Partager sur Twitter

Installer une librairie externe (anax)

    11 novembre 2017 à 23:14:16

    Salut a tous,

    J'aimerais avoir un petit coup de main pour installer une librairie présente sur GitHub (ici Anax) 

    J'en suis arrivé ici : https://github.com/miguelmartin75/anax/wiki/Getting-Started

    Sauf que les commande proposer ici non rien de spécifique, n'y chemin d'accès ou autre, je me retrouve sans reelement quoi faire

    (Mon désarroi est d'autant plus grand en voyant qu'il me faudra aussi installer boost) 

    Question annexe, ya-t-il moyen de pré-configurer un type de projet ? de façon éviter de devoir se retaper toute l’installation a chaque projet de test ?

    Voila voila merci a vous

    -
    Edité par K4kugen 11 novembre 2017 à 23:14:40

    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2017 à 1:55:33

      Tu es sous Windows ou Linux?

      • Partager sur Facebook
      • Partager sur Twitter
        13 novembre 2017 à 14:41:30

        >Sauf que les commande proposer ici non rien de spécifique, n'y chemin d'accès ou autre,

        C'est toute la beauté de CMake.

        Vous téléchargez les sources avec les scripts cmake et il se charge de créer tout le reste pour générer les résultats de compilation en fonction de votre installation particulière.

        > je me retrouve sans reelement quoi faire

        Suivez les préconisations données, celles en note pour Windows sont primordiales.

        >(Mon désarroi est d'autant plus grand en voyant qu'il me faudra aussi installer boost)

        Boost est ton ami. ;)

        >Question annexe, ya-t-il moyen de pré-configurer un type de projet ?

        Les scripts donnés à CMake le font déjà.

        > de façon éviter de devoir se retaper toute l’installation a chaque projet de test ?

        Vos projets devraient utiliser le résultat de la compilation plutôt que d'ajouter la recréation de la bibliothèque.

        En résumé, vous descendez les sources avec les fichiers de configuration CMake, vous utilisez CMake pour qu'il génère le projet VS de génération de la bibliothèque. Vous lancez l'outil de génération de la bibliothèque sélectionné. Vous générez la bibliothèque dans l'outil.=> Vous avez la bibliothèque qui peut être un simple "Input" des autres projets.

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          13 novembre 2017 à 19:20:53

          J'y suis presque, j'ai réinstaller cmake, me voila donc avec avec le projet VS de génération de bibliothèque, quel est l'outil citer au dessus ?

          Merci pour l'aide déjà apporter 

          • Partager sur Facebook
          • Partager sur Twitter
            14 novembre 2017 à 11:28:01

            DOC :

            For Windows, you may also have to use the Visual Studio command line in order for it to build. This is just a simple way to install/build the library, you can use the GUI of CMake, pass arguments to cmake or use the CMake command line tool (ccmake) if you wish

            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
              14 novembre 2017 à 18:11:54

              Mon niveau d'anglais étant discutable, voila ce que je lis :

              Pour Windows, vous pouvez aussi utilisé les lignes de commande Visual Studio dans l'ordre pour build (compiler ?). C'est un chemin simple pour installer/build la librairie, vous pouvez utiliser la GUI de Cmake, si vous le souhaitez, passer les arguments Cmake ou utilisez les lignes de commande Cmake (ccmake)

              Donc oui, mais non : j'ai déjà utiliser Cmake (configurer et compiler), et la suite des opération n'est pas vraiment indiquer dans le paragraphe citer (raison pour laquelle j'ai demander, tu m'avais déjà conseiller de lire cela, ce que j'ai fais)

              Du coup : après avoir configurer et générer le projet (avec Cmake) une fenêtre VS s'ouvre : que faire avec celle-ci ?

              Merci pour ton suivis

              • Partager sur Facebook
              • Partager sur Twitter
                14 novembre 2017 à 18:55:05

                Google trad:

                "Pour Windows, vous devrez peut-être également utiliser la ligne de commande Visual Studio pour la construire. Ceci est juste un moyen simple d'installer / construire la bibliothèque, vous pouvez utiliser l'interface graphique de CMake, passer des arguments à cmake ou utiliser l'outil de ligne de commande CMake (ccmake) si vous le souhaitez"

                Qui est, honnêtement, pas mal du tout.

                "la ligne de commande Visual Studio", c'est la console qui s'ouvre quand on utilise l'une des entrés de menu sous "Visual Studio 20xx / Visual Studio Tools" dans le menu démarrer de Windows.

                C'est pour lancer un interpréter de commande "COMMAND.EXE" avec les variables d'environnements qui vont bien pour facilement utiliser "dev.exe" en ligne de commande.

                "dev.exe", c'est Visual Studio.

                >j'ai déjà utiliser Cmake (configurer et compiler),

                OK, si la compilation c'est bien passée dans Cmake, vous devez avoir le résultat de la génération, un fichier .lib, dans le répertoire correspondant à la configuration (Debug/Release) qui a été spécifié dans le fichier de configuration de CMake.

                >et la suite des opération n'est pas vraiment indiquer dans le paragraphe citer

                Il n'y a pas à "installer" une librairie dans Visual Studio, ni dans Windows.

                Si vous voulez utiliser cette librairie dans un nouveau projet Visual Studio, pour le code client de cette librairie, il suffit de configurer ce nouveau projet pour qu'il utilise le ".lib" généré et ces chemins de recherche pour qu'il trouve les .h et les .lib nécessaire à l'utilisation de la librairie.

                Il y a aussi des possibilités d'intégrer le projet de la librairie (le projet créé par CMake) dans la solution contenant le projet client, pour simplifier la gestion des configurations multiples (Debug/Release,32bits/64bits, etc...), via des dépendances de projets dans la solution Visual Studio.

                >une fenêtre VS s'ouvre : que faire avec celle-ci ?

                Ça doit être juste l'ouverture de la solution ou du projet VS généré(e) par CMake, dans Visual Studio.

                Si vous êtes dans une configuration standard de VS, appuyez sur [Ctrl-Shift-B] pour générer le projet dans la configuration par défaut, au cas où ce .lib n'a pas encore été généré.

                Je pense que vous cherchez un peu trop loin. :lol:

                Keep Cool, Visual Studio, c'est pas GCC. ;)

                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                  15 novembre 2017 à 17:32:03

                  Merci pour toute tes infos, cela m'aide beaucoup

                  Donc apres avoir compiler dans Cmake (qui ne m'affiche pas d'erreur), je me rend au dossier que j'ai indiquer, mais pas de .lib

                  J'ai donc ouvert le projet VS qui a été générer et apres avoir fais [Ctrl - Shift - B] toujours rien :

                  Du coup, il est cacher ou mon .lib ? 

                  (Encore merci)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 novembre 2017 à 19:01:27

                    Bon, il y a un fichier solution et plein de fichier projet aux noms très évocateurs comme "ALL_BUILD", "INSTALL" etc...

                    Si vous voulez utiliser VS sans trop vous prendre la tête, ouvrez le fichier solution "ANAX.sln".

                    La solution VS regroupe des projets, mais s'elle est bien faite, elle permet aussi de faire des dépendances entre projets pour que les fichiers générés par un projet soient utilisés par d'autres.

                    Si les noms de projet sont logiques, le projet INSTALL dépend de ALL_BUILD qui dépend lui-même de "anax".

                    Donc, si le projet courant de la solution est "INSTALL", en le compilant, vous devriez aussi compiler les autres projets, et, au vu de son nom, peut-être que lui-même fait des cochonneries sur le système pour "installer" la librairie fraichement compilée.

                    C'est plutôt fait pour des choses plus complexes, comme des composants COM, mais les développeurs du pingouin aiment bien saloper les systèmes. :-°

                    Vous avez un répertoire "Debug", il y a donc de grande chance que la configuration par défaut soit "Debug" et que les résultats de compilation soient dans ce répertoire.

                    Si vous ne trouvez pas le .lib, donnez-nous les traces de compilations qui s'affichent dans la fenêtre "Output" de VS.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      15 novembre 2017 à 19:28:05

                      En ouvrant "INSTALL" : cela ouvre aussi "anax", "ALL_BUILD" et "ZERO_CHECK"

                      Dans le répertoire "debug", pas de .lib : anax_d.dll  , anax_d.ilk  , anax_d.pdb

                      Comme demander : l'output de VS :

                      1>------ Début de la génération : Projet : ZERO_CHECK, Configuration : Debug x64 ------

                      1>Checking Build System

                      2>------ Début de la génération : Projet : anax, Configuration : Debug x64 ------

                      2>Building Custom Rule C:/Users/Tsuki/Documents/anax/CMakeLists.txt

                      2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x64\CL.exe /c /IC:\Users\Tsuki\Documents\anax\include /IC:\Users\Tsuki\Documents\Dev\Librairie\anax\include /Zi /nologo /W3 /WX- /diagnostics:classic /Od /Ob0 /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /D anax_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"anax.dir\Debug\\" /Fd"anax.dir\Debug\vc141.pdb" /Gd /TP /errorReport:prompt C:\Users\Tsuki\Documents\anax\src\anax\Entity.cpp C:\Users\Tsuki\Documents\anax\src\anax\World.cpp C:\Users\Tsuki\Documents\anax\src\anax\detail\BaseSystem.cpp C:\Users\Tsuki\Documents\anax\src\anax\detail\EntityComponentStorage.cpp C:\Users\Tsuki\Documents\anax\src\anax\detail\EntityIdPool.cpp C:\Users\Tsuki\Documents\anax\src\anax\detail\Filter.cpp

                      2>Entity.cpp

                      2>World.cpp

                      2>BaseSystem.cpp

                      2>EntityComponentStorage.cpp

                      2>EntityIdPool.cpp

                      2>Filter.cpp

                      2>Génération de code en cours...

                      2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\Tsuki\Documents\Dev\Librairie\anax\Debug\anax_d.dll" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:/Users/Tsuki/Documents/Dev/Librairie/anax/Debug/anax_d.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/Users/Tsuki/Documents/Dev/Librairie/anax/Debug/anax_d.lib" /MACHINE:X64  /machine:x64 /DLL anax.dir\Debug\Entity.obj

                      2>anax.dir\Debug\World.obj

                      2>anax.dir\Debug\BaseSystem.obj

                      2>anax.dir\Debug\EntityComponentStorage.obj

                      2>anax.dir\Debug\EntityIdPool.obj

                      2>anax.dir\Debug\Filter.obj

                      2>anax.vcxproj -> C:\Users\Tsuki\Documents\Dev\Librairie\anax\Debug\anax_d.dll

                      2>anax.vcxproj -> C:/Users/Tsuki/Documents/Dev/Librairie/anax/Debug/anax_d.pdb (Full PDB)

                      3>------ Début de la génération : Projet : ALL_BUILD, Configuration : Debug x64 ------

                      3>Building Custom Rule C:/Users/Tsuki/Documents/anax/CMakeLists.txt

                      4>------ Génération ignorée : Projet : INSTALL, Configuration : Debug x64 ------

                      4>Projet non sélectionné dans le cadre d'une génération pour cette configuration de solution 

                      ========== Génération : 3 a réussi, 0 a échoué, 0 mis à jour, 1 a été ignoré ==========

                      Du coup par contre je sens venir que le fait que le projet "INSTALL" sois ignorer ne présage rien de bon
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 novembre 2017 à 10:30:04

                        Ok, c'est pas loin de truc qui fonctionne.

                        Les options de l'édition de lien sont bonne : '/IMPLIB:"C:/Users/Tsuki/Documents/Dev/Librairie/anax/Debug/anax_d.lib"'

                        Les plus probable, c'est que votre Dll n'exporte rien, suite généralement à une constante de compilation mal positionnée.

                        https://stackoverflow.com/questions/584041/how-do-i-build-an-import-library-lib-and-a-dll-in-visual-c

                        Vérifiez avec un outil comme dependency walker ( http://www.dependencywalker.com/ ) que la dll générée exporte bien des trucs.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                          18 novembre 2017 à 18:10:05

                          Je vais regarder les constante de compilation

                          Pour la dll, voici ce que me dis Dependency walker : 

                          Error: At least one required implicit or forwarded dependency was not found.

                          Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.

                          Error: Modules with different CPU types were found.

                          Warning: At least one delay-load dependency module was not found.

                          Une bonne quantiter de module API-MS-WIN et EXT-MS-WIN semble etre introuvable

                          -
                          Edité par K4kugen 19 novembre 2017 à 16:30:48

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 novembre 2017 à 9:25:39

                            C'est pas grave, ça, on verra quand le changement de la Dll merdera.

                            En haut à droite de l'IHM, il doit avoir la liste des fonctions exportées par la Dll.

                            Si elle n'exporte aucune fonction, c'est normal que le .lib ne soit pas généré.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                              10 décembre 2017 à 12:57:52

                              De retour après quelque temps, la dll n'exporte rien selon la description, mais une image sera plus parlante :

                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 décembre 2017 à 10:43:29

                                On est donc sur un problème de constante de compilation mal positionnée.

                                Vérifiez dans la documentation la valeur de la constante de compilation qui pilote l'exportation de l'API.

                                Si vous avez des difficultés à la déterminer, postez le .h principal de la librairie, normalement, c'est au tout début.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                  11 décembre 2017 à 18:36:02

                                  La documentation est très limiter a première vu, donc pas constante de compilation de ce coté

                                  D'ailleur pas de .h principal... pas de .h tous court a vrai dire

                                  Recherche de .h dans le dossier de destination cmake :

                                  Recherche de .h dans le dossier telecharger sur GitHub :

                                  Je me sens un peu bete a ne meme pas reussir a trouver une constante...

                                  Le contenu de config.hpp.inl (que je pense utile ?)

                                  ///
                                  /// anax
                                  /// An open source C++ entity system.
                                  ///
                                  /// Copyright (C) 2013-2014 Miguel Martin (miguel@miguel-martin.com)
                                  ///
                                  /// Permission is hereby granted, free of charge, to any person obtaining a copy
                                  /// of this software and associated documentation files (the "Software"), to deal
                                  /// in the Software without restriction, including without limitation the rights
                                  /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  /// copies of the Software, and to permit persons to whom the Software is
                                  /// furnished to do so, subject to the following conditions:
                                  ///
                                  /// The above copyright notice and this permission notice shall be included in
                                  /// all copies or substantial portions of the Software.
                                  ///
                                  /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  /// THE SOFTWARE.
                                  ///
                                  
                                  #ifndef ANAX_DETAIL_CONFIG_HPP
                                  #define ANAX_DETAIL_CONFIG_HPP
                                  
                                  #include <cstddef>
                                  
                                  #cmakedefine ANAX_32_BIT_ENTITY_IDS @ANAX_32_BIT_ENTITY_IDS@
                                  #cmakedefine ANAX_VIRTUAL_DTORS_IN_COMPONENT @ANAX_VIRTUAL_DTORS_IN_COMPONENT@
                                  //#cmakedefine ANAX_COMPONENTS_ALIGNED @ANAX_COMPONENTS_ALIGNED@
                                  
                                  #ifdef ANAX_32_BIT_ENTITY_IDS
                                  #	define ANAX_ENTITY_ID_INDEX_BIT_COUNT 20
                                  #	define ANAX_ENTITY_ID_COUNTER_BIT_COUNT 12
                                  #else
                                  #	define ANAX_ENTITY_ID_INDEX_BIT_COUNT 48
                                  #	define ANAX_ENTITY_ID_COUNTER_BIT_COUNT 16
                                  #endif
                                  
                                  namespace anax
                                  {
                                      /// The default size of a pool within a world  
                                      constexpr const std::size_t DEFAULT_ENTITY_POOL_SIZE = @ANAX_DEFAULT_ENTITY_POOL_SIZE@;  
                                  
                                      /// The maximum amount of components an entity can
                                      /// contain. Try to make this number even, or preferably
                                      /// a power of 2.
                                      constexpr const std::size_t MAX_AMOUNT_OF_COMPONENTS = @ANAX_MAX_AMOUNT_OF_COMPONENTS@;
                                  }
                                  
                                  #endif // ANAX_DETAIL_CONFIG_HPP
                                  

                                  Ainsi que anax.hpp :

                                  ///
                                  /// anax
                                  /// An open source C++ entity system.
                                  ///
                                  /// Copyright (C) 2013-2014 Miguel Martin (miguel@miguel-martin.com)
                                  ///
                                  /// Permission is hereby granted, free of charge, to any person obtaining a copy
                                  /// of this software and associated documentation files (the "Software"), to deal
                                  /// in the Software without restriction, including without limitation the rights
                                  /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  /// copies of the Software, and to permit persons to whom the Software is
                                  /// furnished to do so, subject to the following conditions:
                                  ///
                                  /// The above copyright notice and this permission notice shall be included in
                                  /// all copies or substantial portions of the Software.
                                  ///
                                  /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  /// THE SOFTWARE.
                                  ///
                                  
                                  #ifndef ANAX_HPP
                                  #define ANAX_HPP
                                  
                                  /// \brief A namespace that contains all classes/functions for the anax library
                                  ///
                                  /// This namespace contains all you need to use the anax library.
                                  ///
                                  /// \author Miguel Martin
                                  namespace anax
                                  {
                                  }
                                  
                                  /// \mainpage
                                  ///
                                  /// \section welcome Welcome
                                  ///
                                  /// Welcome to the anax documentation, here you may find
                                  /// detailed documentation on how to use specific classes/methods for the library.
                                  ///
                                  /// \section resources Extra-resources
                                  /// You may find more resources to learn about the anax library on
                                  /// the anax's wiki, hosted on GitHub
                                  /// <a href="https://github.com/miguelishawt/anax/wiki"> here</a>.
                                  
                                  #define ANAX_VERSION_MAJOR 1
                                  #define ANAX_VERSION_MINOR 1
                                  #define ANAX_PATCH_NUMBER 1
                                  
                                  #define ANAX_VERSION_NUMBER ANAX_VERSION_MAJOR.ANAX_VERSION_MINOR.ANAX_PATCH_NUMBER
                                  
                                  #include <anax/World.hpp>
                                  
                                  #endif // ANAX_HPP
                                  



                                  Merci pour tous le temps passer a m'aider

                                  -
                                  Edité par K4kugen 11 décembre 2017 à 18:37:25

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 décembre 2017 à 19:54:41

                                    Après avoir lu quelques rapports de bug, anax ne semble pas vraiment supporter la génération d'une version DLL depuis Visual Studio :

                                    https://github.com/miguelmartin75/anax/issues/93

                                    https://github.com/miguelmartin75/anax/issues/78 (celui-ci indique dans un lien comment on fait pour proprement faire des exportations de fonction et de classe depuis une Dll compilée avec VS)

                                    Ça casse pas 3 pattes à un canard, mais si la librairie n'a pas été conçue pour être étanche d'un point de vue mémoire, c'est des emmerdes en plus.

                                    Après relecture rapide de file de message. Vous, c'est pas des .dll qui vous intéressent, non.

                                    Si c'est juste pour avoir des .lib de la version STATIC d'anax, vous devriez juste changer une valeur des constantes de Cmake avant de générer les fichiers pour VS.

                                    Mettez "BUILD_SHARED_LIBS" à OFF.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                                    Installer une librairie externe (anax)

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown