Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème librairie avec CMake

Sujet résolu
    21 janvier 2021 à 12:06:36

    Bonjour à tous!

    Je suis récemment passé sur CLion et donc CMake pour mes projets en C. Je dois créer un projet faisant de la simulation quantique et j'ai pour cela besoin d'une librairie qui s'appelle QuEST. 

    J'ai cloné le git, je l'ai ouvert avec CLion, je l'ai compilé en release, mais voilà, maintenant impossible de l'inclure dans mon projet...

    Voilà dans un premier temps mon CMakeLists

    cmake_minimum_required(VERSION 3.17)
    project(Crypto C)
    
    set(CMAKE_C_STANDARD 11)
    
    include_directories(D:/Programmation/QuEST-master/QuEST/include)
    
    add_executable(Crypto main.c)
    
    target_link_libraries(Crypto D:/Programmation/QuEST-master/cmake-build-release/QuEST/libQuEST.a)
    

    Mais je me retrouve avec une montagne de "undefined reference to".

    J'ai aussi tenté ça mais sans plus de résultats:

    cmake_minimum_required(VERSION 3.17)
    project(Crypto C)
    
    set(CMAKE_C_STANDARD 11)
    
    find_package(QuEST REQUIRED)
    include_directories(${QuEST_INCLUDE_DIRS})
    set(LIBS ${LIBS} ${QuEST_LIBRARIES})
    
    add_executable(Crypto main.c)
    
    target_link_libraries(Crypto ${LIBS})
    


    Merci de votre aide!

    -
    Edité par Niskut 21 janvier 2021 à 12:06:52

    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2021 à 23:03:22

      La 2è version de ton CMakeLists ne peut pas marcher, car QuEST ne semble pas avoir de fichier module ou config CMake (ce que cherche find_package) permettant de "consommer proprement" la librairie. Et même s'il en avait, tu n'as sans doute pas invoqué cmake de telle manière que find_package les trouve.

      Pour la première version, il faut voir les undefined reference que tu as, ce sont des symboles de QuEST ou bien d'une librairie dont dépend QuEST? En effet, comme tu as créé une librairie statique de QuEST (en fait il te laisse même pas le choix, ça sent la librairie qui n'exporte pas bien ses symboles publics avec Visual Studio), tu as la responsabilité de lier également ses propres dépendances.

      -
      Edité par SpaceIn 21 janvier 2021 à 23:09:03

      • Partager sur Facebook
      • Partager sur Twitter
        22 janvier 2021 à 17:31:50

        Je pense que tu as raison, j'ai donc contourné le problème en incluant toutes les sources de QuEST dans mon répertoire et en utilisant le CMakeListS suivant:

        cmake_minimum_required(VERSION 3.17)
        project(Crypto C)
        
        set(CMAKE_C_STANDARD 11)
        
        add_subdirectory(QuEST)
        
        add_executable(Crypto main.c)
        
        target_link_libraries(Crypto PRIVATE QuEST)

        (Le répertoire source QuEST contenait déjà un CMakeLists).

        Merci de ton aide.

        • Partager sur Facebook
        • Partager sur Twitter

        Problème librairie avec CMake

        × 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