【发布时间】:2012-04-10 16:57:06
【问题描述】:
我有 Eclipse Platform 3.7.2 和 CDT 8.0.2。
当我想做“全部构建”时,来自其他工作区项目的标头不计为依赖项,并且不会重新构建任何内容。
我有一个 hello world 应用程序和一个静态库项目。 静态库在项目属性 -> c/c++ 常规 -> 路径和符号 -> 引用选项卡 -> 选中“活动”中设置为参考。这是我唯一更改的设置。
顺便说一句,为什么 Eclipse 在项目属性下有一个额外的“项目引用”顶级项,这完全让我感到惊讶。
无论如何,我尝试了 External Builder(在项目创建时默认选择)和 INternal Builder,还结合了全局设置“Preferences -> c++ -> Build -> Build configuration only when there are Eclipse 资源变化......'
感谢您对此的任何想法。
更新: 这是构建依赖项目 Proj2(Proj1 是 lib)时的控制台输出。 'make all' 被调用,但它只是重新链接,它不会重新编译 Main.cpp。 有熟悉 eclipse 生成的 makefile 的人吗?再次感谢。
**** Build of configuration Debug for project Proj2 ****
make all
Building target: Proj2
Invoking: Cross G++ Linker
g++ -L"/home/user/.eclipse-workspace/Proj1/Debug" -o "Proj2" ./Main.o -lProj1
Finished building target: Proj2
**** Build Finished ****
编辑:这已经有 1.5 年的历史了,想补充一下,已经为此提交了一个 Eclipse 错误: https://bugs.eclipse.org/bugs/show_bug.cgi?id=375800
【问题讨论】:
-
我在更高版本的 eclipse/CDT 中看到了同样的情况。据我所知,构建正在生成 .d 头文件依赖项以包含在 makefile 中,但这些规则是不正确的。规则目标是 .d 文件本身而不是 .o... 这看起来是构建使用 -MT 选项错误地设置了 .d 目标的结果。不过,我看不出有什么办法可以改变这一点 - 你曾经解决过这个问题吗?
-
我无法解决。另请参阅我提交的 eclipse 错误,链接如下。
-
我现在有同样的问题。我更喜欢将导出的标头保存在根目录下的 /include 目录中,如果我更改了一个,如何让使用特定标头的源知道它已更改?
-
查看 Eclipse 错误。与此同时,人们发布了一些解决方法。
标签: eclipse reference header eclipse-cdt