使用Eclipse:如何为所有C / C ++项目添加包含路径和库

是否可以在所有C / C ++项目中添加包含路径和库? 换句话说:如何将它们设为全局或将一个C / C ++项目构建设置复制到另一个?

对于Eclipse Indigo:不可能定义全局包含路径和库。 但是您可以将它们从一个项目导出并导入到另一个项目中。

转到项目>属性> C / C ++常规>路径和符号然后单击导出设置…以将包含路径和/或符号定义保存到文件。 在您的其他项目中,您可以使用导入设置…

是的,你可以通过两个步骤,更加用户友好,就像parvus提到的那样。 两者都在“项目属性” – >“C / C ++通用” – >“路径和符号”中完成:

  1. 在已配置包含路径的现有项目中:突出显示要复制到新项目的包含路径(在“包含”选项卡中),然后选择“导出”。 请注意,这会为每行添加[Exp]标记。
  2. 在新创建的项目中:在“参考”选项卡中,勾选刚刚提到的项目的复选框,当您切换回“包含”选项卡时,您会看到刚刚导出的所有路径都显示在那里。

引用库的工作方式相同。

另外看看:

  • 关于此主题的Eclipse Juno文档 ,
  • 一个相关的StackOverflow问题

我经常使用CPATH环境变量在我的所有项目中包含不同的目录。 它位于:c / c ++ – > build-> environment。 一定要用’:’字符(不是’;’分号)分隔每个路径。

您还可以使用PATH包含静态库。 但是,对我而言,它只能在linux中可靠地运行。 在OSX中它毁灭了。

另一种方法是将这些库和标头添加到您的环境默认搜索路径中; 地方喜欢/ usr / local / lib。 阅读默认情况下链接器搜索的位置。

对于库,我在源项目中执行以下操作:

项目 – >属性 – > c / c ++构建 – > c ++链接器 – >库

在此之后我选择库(shift + mouse)和copy(ctrl + c)

在空白项目中:

项目 – >属性 – > c / c ++构建 – > c ++链接器 – >库

ctrl + v(粘贴)

使用eclipse juno可以正常工作

我只是使用Project explorer中内置的eclipse复制一个项目。 然后,只需重命名源文件。

我很久以前就在研究它。 一些post提到了一种方法:项目>属性> C / C ++常规>路径和符号然后单击导出设置..但它仅适用于包含头文件。

要指定库和库路径,据我所知,我找不到一个简单的解决方案。 例如,我现在使用ffmpeg库。 如果使用“Makefile”,则包含和库文件可以表示如下:

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)

这里有很多文件。 如果我在Eclipse C ++项目中逐个包含它们,那就太令人生畏了。 我不知道为什么在Eclipse中没有选项我们可以通过使用过去的长行来包含库文件; 作为分隔符,例如:

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

有没有这样的方法,或者我必须逐个输入库文件,还是必须使用Makefile?

我遇到了同样的问题并解决了这个问题:我在自动生成的makefile中看到有以下行:

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

阅读之后如何参数化Eclipse生成的make文件我意识到你可以在项目之外定义变量。 这意味着它可以是多个项目的共享变量。 所以我在项目之外添加了makefile.defs文件,并在其中声明了一些变量:

 MY_INCLUDE = ... MY_LIBS_PATH = ... MY_LIBS = -lmylib ... (the libs) 

比我所有的项目“properties-> c / c ++ build-> build variables”我定义了新的变量:

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

而且你可以在项目中找到那些变量。 转到属性 – > c / c ++ build-> Settings并选择编译器包含并添加$(my_include)。 转到链接器并选择Libraries并添加到搜索路径$(my_libs_path)。 由于某种原因,Libraries(-l)不能接受我定义的env变量,所以我通过选择链接器绕过它,然后转到Miscellaneous并添加到链接器标志$(my_libs)。 最后,您必须更改命令行中的顺序(当链接器执行时)导致库列表需要在.o文件之后。 所以要做到这一点,你去链接器和选项卡,在那里你可以看到将要执行的最后一个命令行。 在“专家设置命令行模式”中,将$ {FLAGS}移动到命令行的后面(将$(my_libs)字符串移动到命令行的后面)。 这一切。 它很多,但你只需要做一次……希望它能帮到某个人……

半自动,可以使用这个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, eg to "MARKER_INCLUDE_PATH". # # Make sure eclipse is not running while you do these sorts of hacks and backup # your .cproject before. # ----------------------------------------------------------------------------------------- # sample line:  while (<>) { @include_options = m#-I *(.*?) #g; print join ("\n", @include_options) . "\n"; print join ('"/>' ."\n" . ' ' . "\n"; }