Eclipse CDT在自动生成的构建中包含未引用的文件

时间:2017-03-06 12:06:19

标签: c++ eclipse makefile eclipse-cdt

我在eclipse中对cpp很新,并试图搞乱简单的构建。我做了一个基本项目,自动生成构建信息(没有用户定义的makefile)。

简单(工作)案例

我做了一个" Hello World"项目名为Test(不是空项目)。它有一个文件 - Test.cpp,其中main()in =>建立并运行良好。

Test.cpp的

int main() {
  // output some stuff
}

稍微复杂(工作)案例

我创建了一个名为Main.cpp的新文件。将main()函数移动到Main.cpp中并在main中进行函数的解除 - void test();

test()函数存在于Test.cpp中,这是我提供函数定义的地方。

Main.cpp的

#include <iostream> 

void test();

int main() {
  // Use test() 
}

Test.cpp的

#include <iostream> 

void test() {
  // output some stuff
}

构建它,Debug目录中有两个.o文件 - Test.o和Main.o.运行正常。

问题

现在我尝试引入第三个文件--Limits.cpp。

Limits.cpp

#include <iostream> 

void printLimits() {
  // Print out limits for different integer sizes
}

我再次在Main.cpp中提供此功能的减速。

Main.cpp的

#include <iostream> 

void test();

void printLimits();

int main() {
  // Use printLimits() 
}

这次在Debug文件夹中没有为Limits创建目标文件=&gt;构建失败。

Main.cpp:*line* undefined reference to `getLimits()'

看起来项目的自动生成的构建配置是duff。我试过环顾项目房产,但我没有运气。我已经尝试在包含路径/包含文件,其他对象中包含路径/文件,并且我已经检查了我能看到的其他所有属性。这让我两天都感到沮丧。

关于这一点的奇怪之处在于案例2.看起来因为Test.cpp是第一个使它始终包含在构建中的文件? (即使它没有进口)。因为Limits.cpp是新的而不是导入的,因此它不会生成目标文件,因此它无法链接该函数。

我可以通过需要包含文件来制作错误,但我的理解是如果所有目标文件都链接到链接器那么一切都会很好(即我只需要在制作目标文件时需要函数声明这是什么我在这里)。

使用&#34;空白项目&#34;它似乎编译所有的cpp文件,即使它们从未使用过,所以我的上述情况也适用。 (虽然它不适用于src的子文件夹中的文件)。看起来像是一个&#34;功能&#34; &#34; Hello world&#34;项目类型,但它会让我发疯,知道必须有办法让它做到这一点。

如果有人知道是否可以在不编写我自己的makefile的情况下包含此文件(我不是makefile guru(还是!)),或者让我知道如果使用autogen CDT这是不可能的大。

使用MinGW GCC工具链。

由于

0 个答案:

没有答案