可以让Eclipse CDT强制构建一个CMake生成的项目,而忽略资源的新鲜度?

时间:2012-04-12 16:32:08

标签: c++ eclipse cmake eclipse-cdt

我发现自己处于使用Eclipse的奇怪模式中。我有一个项目依赖于在eclipse项目中没有正确考虑的资源,这样如果我只更新依赖项中的一个头文件,Eclipse拒绝在命令时构建,显然是因为它认为没有必要。因此,我最终不断向文件添加一个空格并保存以让CDT进行我的出价。

虽然可以将依赖项集成到项目设置中,但项目偶尔会被CMake自动生成工具(我对修补无兴趣)重写,这会覆盖配置,并要求我重新配置依赖性一次又一次。

我希望能够做的只是告诉Eclipse它应该忽略它认为应该发生的事情并遵守构建命令,并让底层make系统完成它的工作(确定应该和不应该做什么)建造)。

TL; DR:

  • Eclipse CDT尝试通过观察文件的新鲜度来确定是否构建
  • 只能正确设置依赖关系
  • 我不想设置依赖项,因为当我向项目添加文件时项目经常被CMake覆盖

任何人都知道如何覆盖CDT的决定并强制构建?

3 个答案:

答案 0 :(得分:2)

我面临同样的问题,我正在开发一个程序分为两个部分(两个静态库),如果我重建一个库,Eclipse就不会更新另一个,因为它显然不会注意静态库的更改。

解决方案是在每次构建之前“清理”项目(右键单击项目 - >清除项目),然后进行构建。这有效地删除了所有以前的构建结果,并从头开始构建。我还没想出如何通过单击按钮来完成它,但这对我有用。

答案 1 :(得分:0)

您可以在makefile中添加以下内容吗?

FORCE:

%.o : %.cpp FORCE
    $(CXX) -c $(CXXFLAGS) $< -o $@

这里FORCE是一个空目标,因此总是新鲜的。因此,依赖项列表中包含FORCE的地方,它们将在所有构建中新建。

答案 2 :(得分:0)

您使用的是Eclipse的内部构建器吗?因为,在使用外部构建器设置时,我不会遇到您提到的任何问题。即使在Eclipse之外编辑某些文件时,尽管Eclipse完全没有意识到这些更改,但构建仍然可以正常工作。

Eclipse C/C++ Build project properties