我在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工具链。
由于