Можно ли добавлять включенные пути и библиотеки ко всем проектам C/С++? В других словах: Как я могу сделать их глобальными или скопировать один проект сборки проекта C/С++ в другой?
С Eclipse: как добавить include paths и библиотеки для всего вашего проекта C/С++
Ответ 1
Для Eclipse Indigo: Нет возможности определять глобальные пути и библиотеки. Но вы можете экспортировать и импортировать их из одного проекта в другой.
Перейдите в Проект > Свойствa > Общие сведения о C/С++ > Пути и символы Затем нажмите Настройки экспорта..., чтобы сохранить пути включения и/или определения символов в файл. В другом проекте вы можете использовать Параметры импорта...
Ответ 2
Да, вы можете в 2 шага более удобны для пользователя, как указано в parvus. Оба выполняются в "Свойства проекта" → "C/С++ General" → "Пути и символы":
- В существующем проекте, в котором вы уже настроили пути include: выделите пути включения (на вкладке "Включает" ), которые вы хотите скопировать в новый проект, и выберите "Экспорт". Обратите внимание, что это добавляет тег
[Exp]
в каждую строку. - В новом созданном проекте: На вкладке "Ссылки" установите флажок только что упомянутого проекта, и когда вы вернетесь на вкладку "Включает", вы увидите, что все пути, которые вы только что экспортировали, появляются там.
Обращение к библиотекам работает одинаково.
Также посмотрите:
Ответ 3
Я часто использую переменную среды CPATH для включения разных каталогов во все мои проекты. Он найден в среде c/С++ → build- > . Не забудьте разделить каждый путь с символом ':' (а не с точкой с запятой).
Вы также можете использовать PATH для включения статических библиотек. Однако для меня он работал только надежно в Linux. В OSX это руины делают.
Альтернативой было бы добавить эти библиотеки и заголовки в пути поиска по умолчанию в окружении; место любит /usr/local/lib. Прочитайте, где ваш линкер выполняет поиск по умолчанию.
Ответ 4
Для библиотек я делаю следующее в исходном проекте:
Project → properties → c/С++ Build → С++ linker → libraries
После этого я выбираю библиотеки (shift + mouse) и копирует (ctrl + c)
В пустом проекте:
Project → properties → c/С++ Build → С++ linker → libraries
ctrl + v (paste)
Прекрасно работает с eclipse juno
Ответ 5
Я просто копирую один проект из использования eclipse, встроенного в Project explorer. После этого просто переименуйте исходные файлы.
Ответ 6
Я изучаю его давно. В нескольких сообщениях упоминается один метод: Project > Properties > C/С++ General > Пути и символы Затем нажмите "Экспорт настроек". Но он работает только для включения файлов заголовков.
Чтобы указать библиотеки и пути к библиотеке, насколько я знаю, я не нашел простого решения. Например, теперь я использую библиотеки 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 С++, это сложно. Я не знаю, почему в Eclipse нет опции, чтобы мы могли включать файлы библиотеки, используя прошлую длинную линию; в качестве разделителя, например:
-lavdevice -lavfilter -lswresample -lswscale -lavformat -lavcodec -ldl -lasound -lSDL -lz -lrt -lavutil -lm
Есть ли такой способ, или я должен набирать файлы библиотеки один за другим или использовать Makefile?
Ответ 7
Я столкнулся с той же проблемой и решил ее так: Я видел, что в автогенерированном make файле есть строки:
-include ../makefile.init
...
-include ../makefile.defs
...
-include ../makefile.targets
после чтения Как я могу параметризовать созданный файл создания Eclipse Я понял, что вы можете определить переменные за пределами вашего проекта. Это означает, что это может быть общая переменная для нескольких проектов. Поэтому я добавил файл makefile.defs вне проекта и объявил в нем некоторые переменные:
MY_INCLUDE = <path to include>...
MY_LIBS_PATH = <path to libs>...
MY_LIBS = -lmylib ... (the libs)
чем во всех моих проектах "properties- > c/С++ build- > build variables" Я определил новую переменную:
my_include = $(MY_INCLUDE)
my_libs_path = $(MYLIBS_PATH)
my_libs = $(MY_LIBS)
И чем вы можете использовать эти переменные в проектах. Перейдите в properties- > c/С++ build- > Настройки и выберите компилятор и добавьте $(my_include). Перейдите в компоновщик и выберите "Библиотеки" и добавьте путь поиска $(my_libs_path). По какой-то причине библиотеки (-l) не могут взять мою определенную переменную env, поэтому я обойду ее, выбирая компоновщик, а затем перейдите в раздел "Разное" и добавьте флаги компоновщика $(my_libs). Наконец, вам нужно изменить порядок в командной строке (когда выполняется компоновщик), потому что список libs должен появиться после файлов .o. Поэтому для этого перейдите к компоновщику и вкладке, и там вы увидите финальную командную строку, которая будет выполнена. В "шаблоне командной строки параметров эксперта" вы перемещаете ${FLAGS} в конец командной строки (который перемещает строку $(my_libs), которая находится в задней части командной строки). ВСЕ ЭТО. его много, но вам нужно сделать это только один раз... надеюсь, что это поможет кому-то...
Ответ 8
Полуавтоматически это можно сделать, используя этот perl script:
#!/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";
}