web-dev-qa-db-fra.com

Comment configurer Eclipse CDT pour cmake?

Comment configurer Eclipse "Helios" avec le plugin CDT pour cmake?

cmake all 
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not    exist.

Eclipse veut toujours utiliser l'option 'all' et je ne sais pas comment l'arrêter pour ne pas l'utiliser.

J'ai vu que dans la section "Comportement de construction", dans "Préférence", il y avait l'option "tous". J'ai effacé cela, mais cela fonctionne toujours mal (cette même erreur).

20
kspacja

Dans Eclipse-CDT, vous n'avez pas créez des projets cmake mais vous importez des projets cmake. Voici ce que vous devez faire:

  1. Supposons que la source de votre projet CMake nommé "Planner" se trouve dans D:/javaworkspace/src/Planner

  2. Créez un dossier (les dossiers DOIVENT être parallèles les uns aux autres): D:/javaworkspace/build/Planner

  3. Accédez au dossier D:/javaworkspace/build/Planner et exécutez CMake à l'aide du générateur Eclipse:

    cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles"
    

    Cela générera les fichiers de création pour votre projet Planner.

  4. Pour l'importer dans Eclipse, procédez comme suit:

    Fichier -> Importer -> Code existant en tant que projet Makefile

    et sélectionnez D:/javaworkspace/build/Planner (le dossier de sortie de la construction avec les fichiers de création) comme "emplacement du code existant"

Cependant, en regardant vos chemins, il me semble que vous travaillez sur Windows. Dans Windows, CMake peut générer des projets Visual Studio. Si vous voulez utiliser CMake, je suggère d'abord de créer un projet "hello world" en utilisant CMake (rappelez-vous, Eclipse ne crée pas de projets CMake, vous devez créer un fichier CMakeLists.txt à la main)

30
gvd

Ce qui a le mieux fonctionné pour moi, c'est cmake4Eclipse. C'est un plugin disponible via le marché.

Des portions du texte d'aide de cmake4Eclipse:

CMake pour CDT nécessite un projet C/C++ existant pour fonctionner. Il permet d'utiliser cmake comme générateur pour les makefiles au lieu du générateur intégré à CDT. Voir Activer la génération de buildscript CMake pour plus de détails.

Pour configurer un nouveau projet avec le code source existant, veuillez suivre ces étapes:

  • Consultez votre code source.
  • Ouvrez le nouvel assistant de projet C/C++ ("Fichier" => "Nouveau" => "Projet C" ou "Fichier" => "Nouveau" => "Projet C++").
    • Assurez-vous que l'emplacement du projet pointe vers le répertoire racine de vos fichiers extraits
    • Pour le type de projet, sélectionnez Exécutable. Vous pouvez également sélectionner Bibliothèque partagée ou Bibliothèque statique, peu importe, que les informations proviennent de votre CMakeLists.txt, mais CDT l'exige. Ne sélectionnez pas le projet Makefile ici!
    • Terminez la création du projet.
  • Ouvrez la boîte de dialogue "Propriétés du projet".
    • Sélectionnez le nœud "C/C++ Build" et l'onglet "Builder Settings" et assurez-vous que Generate Makefiles automatiquement est coché.
    • Sélectionnez le nœud "Tool Chain Editor" et définissez "CMake Make Builder" comme générateur actuel.
    • Si votre CMakeLists.txt de niveau supérieur ne réside pas dans le répertoire racine de vos fichiers extraits, sélectionnez le nœud "C/C++ General" "Chemin et symboles" et l'onglet "Emplacement source". Ajustez ensuite le dossier source pour pointer vers le répertoire contenant votre fichier CMakeLists.txt. Cela indiquera à l'indexeur CDT d'analyser les fichiers d'en-tête de votre projet.
  • Astuce de pro: Ajoutez un fichier CMakeLists.txt dans le répertoire racine de vos fichiers extraits, si vous manquez le dossier Binaires ou Archives dans la vue Projets C/C++. Générez le projet. Cela invoquera cmake pour générer les scripts de construction, si nécessaire, puis appellera make.

N'essayez pas d'importer un projet Eclipse que vous avez créé manuellement à l'aide de cmake -G Eclipse CDT4 - Unix Makefiles, car cela vous mettra sur la route classique du projet Makefile!

La meilleure chose à propos de ce plugin est qu'il peut utiliser les options du compilateur exporté par cmake pour indexer votre projet.

  • Ouvrez la boîte de dialogue "Propriétés du projet".
    • Sélectionnez le nœud "C/C++ General" et le "Preprocessor includes Paths, Macros etc." languette. Sélectionnez "CMAKE_EXPORT_COMPILE_COMMANDS Parser" et déplacez-le en haut de la liste.
    • Appuyez sur "OK" pour fermer la boîte de dialogue. Assurez-vous de déclencher une génération maintenant et de recréer l'index.

Provider tab

Cela corrigeait tous les problèmes d'indexeur désagréables qui m'agaçaient lorsque je n'utilisais que "Paramètres du compilateur intégré CDT GCC" et ajoutais des trucs comme "-std = c ++ 14" à "Commande pour obtenir les spécifications du compilateur".

15
Martin Gerhardy

Utilisation de CMAKE dans le projet Eclipse Makefile (sur Windows):

1) créer un nouveau "Makefile Project with Existing Code"

2) modifier les paramètres du générateur (Propriétés du projet-> Génération C/C++-> Paramètres du générateur):

  • commande Build: cmd/c "mkdir $ {PWD} & cd/D $ {PWD} && $ {CMAKE} -G" Makefiles Unix "$ {ProjDirPath} && make"

  • répertoire de construction: $ {workspace_loc:/IoT_SDK}/build/$ {ConfigName}

C'est tout!

5
Nazar Panchoshnyk

En plus de la réponse acceptée, vous devez spécifier la version d'Eclipse.

Eclipse Luna (4.4):

cmake -G"Eclipse CDT4 - Unix Makefiles" -D_Eclipse_VERSION=4.4 ../../src/Planner

Eclipse Kepler (4.3):

cmake -G"Eclipse CDT4 - Unix Makefiles" -D_Eclipse_VERSION=4.3 ../../src/Planner
2
caiiiycuk

Une autre méthode complètement différente.

  • Créez manuellement un projet Eclipse vide.

  • Liez le répertoire source via Propriétés du projet -> Général C/C++ -> Chemins et symboles -> Emplacement source.

  • Dans les répertoires de construction Debug and Release, créez "Make Targets" (en utilisant la "Make Targets View"). Laissez le champ "Make Target" vide et définissez le champ "command" sur cmake -G "Unix Makefiles" <path/to/the/sources>.

  • Lorsque vous double-cliquez sur le "Make Target" que vous avez créé, cela devrait déclencher l'invocation de cmake dans les répertoires Debug/Release.

  • Dans 'Propriétés du projet -> C/C++ Build', désactivez le générateur de makefile intégré.

Maintenant, la construction normale devrait fonctionner. Il récupérera également toutes les modifications dans les fichiers CMakeLists.txt (dans la mesure où CMake le peut).

Peut-être une description plus détaillée: https://stackoverflow.com/a/38140914/4742108

1
Velkan

Quelle que soit la méthode que j'ai utilisée, les inclus externes n'ont pas été indexés.

En effet, CMAKE a utilisé les "fichiers de réponses" qui masquent toutes les inclusions à l'intérieur de ces fichiers, à la place, les utilisent directement (-IPATH_TO_SOME_DIR)

Pour désactiver le "fichier de réponses", j'ai utilisé les commandes suivantes:

SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES NO)
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES NO)

Pour forcer le CMAKE à montrer l'exécution de gcc/g ++, j'ai modifié la cible de build make à "all VERBOSE = 1". Notez que cela n'est pas nécessaire lorsque vous utilisez cmake4Eclipse.

J'ai Eclipse dans la version 2018-12 (4.10.0) avec CDT dans la version 9.6.

1
Piotr Sydow