С Eclipse: Как добавить включаемые пути и библиотеки для всего вашего проекта C / C ++ - PullRequest
19 голосов
/ 25 апреля 2010

Можно ли добавить пути включения и библиотеки во все проекты C / C ++? Другими словами: как сделать их глобальными или скопировать один параметр сборки проекта C / C ++ в другой?

Ответы [ 8 ]

13 голосов
/ 19 сентября 2011

Для Eclipse Indigo: Нет возможности определить глобально включаемые пути и библиотеки. Но вы можете экспортировать и импортировать их из одного проекта в другой.

Перейти к Проект> Свойства> C / C ++ Общие> Пути и символы Затем нажмите Параметры экспорта ... , чтобы сохранить включенные пути и / или определения символов в файле. В другом проекте вы можете использовать Параметры импорта ...

9 голосов
/ 27 ноября 2012

Да, вы можете, в 2 этапа, сделать его более удобным для пользователя, как упомянутое parvus. И то, и другое делается в «Свойствах проекта» -> «Общие сведения о C / C ++» -> «Пути и символы»:

  1. В существующем проекте, в котором вы уже настроили пути включения: выделите пути включения (на вкладке «Включения»), которые вы хотите скопировать в новый проект, и выберите «Экспорт». Обратите внимание, что это добавляет тег [Exp] к каждой строке.
  2. В новом созданном проекте: на вкладке «Ссылки» установите флажок только что упомянутого проекта, и когда вы вернетесь на вкладку «Включения», вы увидите, что все пути, которые вы только что экспортировали, появляются там.

Ссылка на библиотеки работает аналогично.

Также взгляните на:

7 голосов
/ 13 мая 2012

Я часто использую переменную среды CPATH, чтобы включить разные каталоги во все мои проекты. Он находится в: c / c ++ -> build-> environment. Обязательно разделяйте каждый путь символом «:» (не точкой с запятой);

Вы также можете использовать PATH для включения статических библиотек. Тем не менее, для меня это надежно работает только в Linux. В OSX это руины делают.

Альтернативой может быть добавление этих библиотек и заголовков в пути поиска по умолчанию для вашей среды; место лайков / usr / local / lib. Узнайте, где ваш компоновщик выполняет поиск по умолчанию.

5 голосов
/ 02 августа 2013

Для библиотек я делаю следующее в исходном проекте:

Проект -> свойства -> сборка c / c ++ -> компоновщик c ++ -> библиотеки

После этого я выбираю библиотеки (shift + mouse) и копирую (ctrl + c)

В пустом проекте:

Проект -> свойства -> сборка c / c ++ -> компоновщик c ++ -> библиотеки

Ctrl + V (вставить)

Отлично работает с Eclipse Juno

3 голосов
/ 01 июля 2013

Я просто копирую один проект, используя eclipse, встроенный в Project Explorer. После этого просто переименуйте исходные файлы.

1 голос
/ 13 марта 2013

Я давно в этом разбираюсь. В нескольких постах упоминается один метод: Проект> Свойства> Общие положения C / C ++> Пути и символы Затем нажмите «Настройки экспорта». Но это работает только для включения заголовочных файлов.

Чтобы указать библиотеки и пути к библиотекам, насколько я знаю, я не нахожу легкого решения. Например, я сейчас использую библиотеки ffmpeg. Если вы используете «Makefile», файлы включения и библиотеки могут быть выражены ниже:

FFMPEG_LIBS = libavdevice
libavformat
libavfilter
кодек
libswresample
libswscale
libavutil
CFLAGS: = $ (shell pkg-config --cflags $ (FFMPEG_LIBS)) $ (CFLAGS) LDLIBS : = $ (shell pkg-config --libs $ (FFMPEG_LIBS)) $ (LDLIBS)

Здесь много файлов. Если я включу их один за другим в проект Eclipse C ++, это будет сложно. Я не знаю, почему в Eclipse нет возможности, чтобы мы могли включать библиотечные файлы, используя длинную строку, используя; в качестве разделителя, например:

-lavdevice -lavfilter -lswresample -lswscale -lavformat -lavcodec -ldl -lasound -lSDL -lz -lrt -lavutil -lm

Есть ли такой способ, или я должен набирать файлы библиотеки один за другим или использовать Makefile?

0 голосов
/ 14 декабря 2017

Полуавтоматически, это можно сделать с помощью этого сценария 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";
}
0 голосов
/ 09 марта 2015

Я столкнулся с той же проблемой и решил ее так: Я видел, что в автоматически сгенерированном make-файле есть строки:

-include ../makefile.init
 ...
-include ../makefile.defs
 ...
-include ../makefile.targets

после прочтения Как я могу параметризовать созданный Eclipse make-файл Я понял, что вы можете определять переменные вне вашего проекта. Это означает, что он может быть общей переменной для нескольких проектов. Поэтому я добавил файл makefile.defs вне проекта и объявил в нем несколько переменных:

MY_INCLUDE = <path to include>...
MY_LIBS_PATH = <path to libs>...
MY_LIBS = -lmylib ... (the libs)

чем во всех моих проектах "свойства-> c / c ++ build-> переменные сборки" я определил новую переменную:

my_include = $(MY_INCLUDE)
my_libs_path = $(MYLIBS_PATH)
my_libs = $(MY_LIBS)

А чем вы можете эти переменные в проектах. Перейдите в свойства-> c / c ++ build-> Settings и выберите включения компилятора и добавьте $ (my_include). Перейдите в компоновщик и выберите «Библиотеки» и добавьте в путь поиска $ (my_libs_path). По какой-то причине библиотеки (-l) не могут взять мою определенную переменную env, поэтому я обхожу ее, выбрав компоновщик, затем перехожу к разделу Разное и добавляю к флагам компоновщика $ (my_libs). Наконец, вы должны изменить порядок в командной строке (при выполнении компоновщика), потому что список библиотек должен идти после файлов .o. Таким образом, чтобы сделать это, вы идете на компоновщик и вкладку, и там вы можете увидеть окончательную командную строку, которая будет выполнена. В «шаблоне командной строки параметров эксперта» вы перемещаете $ {FLAGS} в конец командной строки (которая перемещает строку $ (my_libs) в конец командной строки). ВСЕ ЭТО. это много, но вам нужно сделать это только один раз ... надеюсь, что это кому-то поможет ...

...