Est-il possible d'ajouter des chemins d'accès et des bibliothèques à tous les projets C/C++? En d'autres termes: comment puis-je les rendre globaux ou copier un paramètre de construction de projet C/C++ vers un autre?
Pour Eclipse Indigo: Il n’est pas possible de définir globalement les chemins et les bibliothèques. Mais vous pouvez les exporter et les importer d’un projet à un autre.
Allez dans Projet> Propriétés> C/C++ Général> Chemins et symboles Ensuite, cliquez sur Paramètres d'exportation ... pour enregistrer les chemins d'accès et/ou les définitions de symboles dans un fichier. Dans votre autre projet, vous pouvez ensuite utiliser Import Settings ...
Oui, vous pouvez, en 2 étapes, être plus convivial que celui mentionné par parvus. Les deux sont effectués dans "Propriétés du projet" -> "Général C/C++" -> "Chemins et symboles":
[Exp]
à chaque ligne.Le référencement des bibliothèques fonctionne de la même manière.
Regardez aussi:
J'utilise souvent la variable d'environnement CPATH pour inclure différents répertoires dans tous mes projets. Il se trouve sous: c/c ++ -> build-> environment. Assurez-vous de séparer chaque chemin par un caractère ':' (et non un point-virgule).
Vous pouvez également utiliser PATH pour inclure des bibliothèques statiques. Cependant, pour moi, cela ne fonctionne de manière fiable que sous Linux. Sous OSX, les ruines font.
L'alternative serait d'ajouter ces bibliothèques et ces en-têtes aux chemins de recherche par défaut de vos environnements; endroit aime/usr/local/lib. Découvrez où votre éditeur de liens effectue des recherches par défaut.
Pour les bibliothèques, je fais ce qui suit dans le projet source:
Projet -> Propriétés -> Génération c/c ++ -> lieur c ++ -> bibliothèques
Après cela, je sélectionne les bibliothèques (shift + souris) et copie (ctrl + c)
Dans le projet vide:
Projet -> Propriétés -> Génération c/c ++ -> lieur c ++ -> bibliothèques
ctrl + v (coller)
Fonctionne bien avec Eclipse Juno
Je viens de copier un projet en utilisant Eclipse intégré dans l'Explorateur de projets. Ensuite, il suffit de renommer les fichiers source.
Je me penche sur la question il y a longtemps. Quelques articles ont mentionné une méthode: Projet> Propriétés> Général C/C++> Chemins et symboles Ensuite, cliquez sur Exporter les paramètres ... ne fonctionne que pour inclure des fichiers d'en-tête.
Pour autant que je sache, je ne trouve pas de solution facile aux bibliothèques et aux chemins de bibliothèques. Par exemple, j'utilise maintenant les bibliothèques ffmpeg. Si vous utilisez "Makefile", l'inclusion de et les fichiers de bibliothèque peuvent être exprimés ci-dessous:
FFMPEG_LIBS = libavdevice
libavformat
libavfilter
libavcodec
libswresample
libswscale
libavutil
CFLAGS: = $ (Shell pkg-config --cflags $ (FFMPEG_LIBS)) $ (CFLAGS) LDLIBS : = $ (Shell pkg-config --libs $ (FFMPEG_LIBS)) $ ( LDLIBS)
Il y a beaucoup de fichiers ici. Si je les inclus un par un dans un projet Eclipse C++, c’est décourageant. Je ne sais pas pourquoi Eclipse ne permet pas d’inclure des fichiers de bibliothèque. en utilisant passé une longue ligne en utilisant; en tant que séparateur, tel que:
-lavdevice -lavfilter -lswresample -lswscale -lavformat -lavcodec -ldl -lasound -lSDL -lz -lrt -lavutil -lm
Existe-t-il un tel moyen ou dois-je taper les fichiers de bibliothèque un par un ou utiliser Makefile?
Semi-automatiquement, cela peut être fait en utilisant ce script Perl:
#!/usr/bin/Perl
# pipe the (gcc) compile command into this script
# It emits listOptionValue lines to paste into .cproject
#
# To easily find the paste location, set the include path as usual to a string
# that is easily recognizable in the .cproject, e.g. to "MARKER_INCLUDE_PATH".
#
# Make sure Eclipse is not running while you do these sorts of hacks and backup
# your .cproject before.
# -----------------------------------------------------------------------------------------
# sample line: <listOptionValue builtIn="false" value="/usr/include/gdk-pixbuf-2.0"/>
while (<>) {
@include_options = m#-I *(.*?) #g;
print join ("\n", @include_options) . "\n";
print join ('"/>' ."\n" . ' <listOptionValue builtIn="false" value="', @include_options);
print '"/>' . "\n";
}
J'ai rencontré le même problème et l'ai résolu comme ceci: J'ai vu que dans le fichier makefile généré automatiquement, il y avait des lignes:
-include ../makefile.init
...
-include ../makefile.defs
...
-include ../makefile.targets
après avoir lu Comment paramétrer un fichier make généré par Eclipse Je me suis rendu compte que vous pouvez définir des variables en dehors de votre projet. Cela signifie qu'il peut être partagé variable pour plusieurs projets. J'ai donc ajouté le fichier makefile.defs en dehors du projet et y ai déclaré des variables:
MY_INCLUDE = <path to include>...
MY_LIBS_PATH = <path to libs>...
MY_LIBS = -lmylib ... (the libs)
que dans tous mes projets "propriétés-> c/c ++ construction-> variables de construction" j'ai défini une nouvelle variable:
my_include = $(MY_INCLUDE)
my_libs_path = $(MYLIBS_PATH)
my_libs = $(MY_LIBS)
Et que vous pouvez vous ces variables dans les projets. Allez dans propriétés-> c/c ++ build-> Paramètres et choisissez le compilateur inclus et ajoutez $ (my_include). Accédez à l'éditeur de liens, choisissez Bibliothèques et ajoutez-le au chemin de recherche $ (my_libs_path). Pour une raison quelconque, les bibliothèques (-l) ne peuvent pas prendre la variable env définie, aussi je la contourne en choisissant l’éditeur de liens, puis en allant à Divers et en ajoutant à l’éditeur de liens drapeaux $ (my_libs). Enfin, vous devez modifier l’ordre dans la ligne de commande (lorsque l’éditeur de liens s’exécute), car la liste des bibliothèques doit suivre les fichiers .o. Donc pour faire cela, vous allez dans l'éditeur de liens et l'onglet et vous pouvez voir la dernière ligne de commande qui va être exécutée. Dans "Modèle de ligne de commande des paramètres experts", vous déplacez le $ {FLAGS} au dos de la ligne de commande (ce qui déplace la chaîne $ (my_libs) pour qu’elle se trouve au dos de la ligne de commande). C'EST TOUT. c'est beaucoup, mais vous ne devez le faire qu'une fois ... espérons que cela aidera quelqu'un ...