Eclipse CDT中的项目依赖项

Mar*_*rkP 27 c++ eclipse

我第一次使用eclipse.我是一名经验丰富的VisualStudio用户,所以我试图在eclipse中找到类似的功能.我有两个项目,A和B.项目A在完成编译后吐出libA.a.项目B链接libA.a. 这是我的问题.

  1. 我编译项目A然后项目B,一切都很好.
  2. 我对项目A进行了代码更改,需要构建项目A.
  3. 我尝试构建项目B,但它声明没有检测到任何更改.

如何让项目B知道项目A的输出?目前我不得不做一个干净的项目B构建,以便重新链接libA.a.

谢谢.

编辑:在我的ProjectB->路径和符号 - >参考选项卡中,我检查了项目A. 重建项目A后,这不会重新链接.

小智 23

尝试以下设置:

  1. 转到主项目C/C++常规路径和符号参考的属性
  2. 勾选所有依赖项.

  • 一句警告,这是非常沉重的操作.如果您正在设置一个新项目,请选择它,但如果您有一个包含大量设置的现有项目,请在使用时注意.Eclipse将更新你的链接器路径和设置(也可能是很多其他的东西),所以如果你决定之后不再使用它,你会发现eclipse已经删除了很多以前存在的设置. (2认同)

nos*_*nos 7

进入项目B的项目属性,选择项目引用并在项目A上引用它(依赖).

编辑,似乎是一个已知的错误

  • 我这样做了 这允许项目B在项目A过期时重新编译.如果项目B不需要重新编译,则在新输出可用时,它不会重新链接到项目A的输出. (2认同)

Kei*_*ith 3

可以使用touch命令来解决此问题。

在 Eclipse 中,“构建步骤”选项卡是 C/C++ 构建/设置的一部分。在预构建步骤命令行中,输入touch filename

filename是您的应用程序中的任何文件。这可能是带有main(). 这可能是一个专门用于此解决方法的特殊文件,touchdummy.c它可以是一个很小的文件,可以快速编译。

当应用程序构建时,即使您没有更改任何源,touch命令也会导致 make 重建应用程序。如果重建了库,则应用程序将使用新库重建。

您可以在此处了解如何touch影响文件的日期/时间。 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html

编辑:Eclipse 中的确切命令是 touch${ProjDirPath}/src/main.c

编辑:此命令应该有效,但似乎如果“主”项目没有更改,则不会执行预构建步骤。该touch命令还会导致 eclipse 提示重新加载它所触及的文件。一个很大的烦恼。