web-dev-qa-db-fra.com

CLion Indexer ne résout pas certains inclus dans le répertoire du projet

J'ai un projet CLion C++ qui a la structure suivante:

    project
       ---->my_includes
       |   ----> my_own.hpp
       ---->source
           ----> my_app
               ----> my_src.cpp

La première ligne de my_src.cpp est 

#include "my_includes/my_own.hpp"

J'utilise un système de construction externe qui nécessite ce format d'inclusion. Le problème est que si j'utilise une fonction dans mon fichier source défini dans l'en-tête inclus, CLion dit "Je ne trouve pas mon_own.hpp" si je tente de survoler l'inclusion.

J'ai essayé de marquer le répertoire d'inclusion comme contenant la source du projet ou les en-têtes, mais cela n'a pas résolu le problème. Des idées?

9
CPayne

Vous devez créer un CMakeLists.txt pour que CLion soit heureux. Il suffit de déclarer tous les fichiers source, vous n'avez pas à convertir vos scons (ou tout autre système de construction) en cmake.

Vous n'avez même pas besoin d'écrire manuellement le fichier CMakeLists.txt, vous pouvez demander à CLion de le faire: File | Import project ... |, puis de pointer vers le répertoire contenant votre projet.

Maintenant, éditez le CMakeLists.txt généré et ajoutez une commande cmake pour indiquer à CLion où trouver l'inclus (en réalité pour indiquer le compilateur, et CLion réutilisera ces informations).

Puisque vos fichiers source utilisent include comme #include "my_includes/my_own.hpp", vous devez indiquer à cmake le répertoire de base contenant le répertoire my_includes:

include_directories(.)

Où le point signifie le même répertoire que celui contenant le CMakeLists.txt.

J'ai testé avec un projet reproduisant votre mise en page et depuis my_src.cpp, je peux accéder à my_own.hpp.

Ensuite, pour construire, vous devez toujours utiliser scons dans une console. Il est également possible d'ajouter une commande cmake, add_custom_target() qui appellera vos scons (ou votre marque, ou autre), afin que vous puissiez également naviguer de CLion aux erreurs de construction.

18
marco.m

Ceci devrait être un projet basé sur CMake à ouvrir correctement dans CLion . Consultez le didacticiel de base de CMake si vous êtes nouveau dans CMake: https://www.jetbrains.com/help/clion/2016.1/quick-cmake- tutorial.html

0
nastasiak2512