Eclipse CDT中的项目依赖项

时间:2011-10-11 15:50:42

标签: c++ eclipse

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

  1. 我编译项目A然后编译项目B,一切都很好。
  2. 我对项目A进行了代码更改,需要构建项目A.
  3. 我尝试构建项目B,但它表示未检测到任何更改。
  4. 如何让项目B了解项目A的输出?目前我不得不对项目B进行干净的构建,以便重新链接libA.a。

    感谢。

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

5 个答案:

答案 0 :(得分:22)

尝试以下设置:

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

答案 1 :(得分:7)

进入项目B的项目属性,选择项目参考并在项目A上进行参考(依赖)。

修改,似乎是一个已知的bug

答案 2 :(得分:3)

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

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

'filename'是应用程序中的任何文件。这可能是main()文件。这可能是一个特殊的文件,只是为了解决这个问题,touchdummy.c,它可以是一个很小的文件,可以快速编译。

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

可以在这里阅读“触摸”如何影响文件的日期/时间。 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html

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

编辑:此命令应该有效,但看起来如果'main'项目没有改变,则不会执行预构建步骤。此外,'touch'命令会导致eclipse提示重新加载它触及的文件。一个很大的烦恼。

答案 3 :(得分:2)

Eclipse项目依赖于项目属性(依赖项目?)中的复选框,这就是Eclipse决定构建哪个项目的方式。您可以自己设置它,但通常在更改Java构建路径时设置它。

答案 4 :(得分:1)

默认情况下,至少在QNX C ++项目中,它不会检查其他项目的更改。 右键单击该项目,然后展开“检查依赖关系开启/关闭” - >“仅检查用户标题” 它似乎工作,大致...... 它似乎对代码进行了makedepends,并将* .d文件添加到输出文件夹,这些文件只是依赖于列出头文件的文件。 注意:这些似乎没有重新生成,并且过时了 - 我不知道如何重新生成它们。