我是c ++单元测试的新手,在Linux上编写c ++(Mint)。我正在使用CodeLite作为我的IDE。我在stackoverflow上找到了关于链接器错误的几个答案,但经过几个小时的尝试各种解决方案后,我还没有成功地正确实现解决方案。
我通过apt-get安装了unittest ++。 unittest ++头文件安装在/ usr / include中,因此我将其添加到Codelite中的编译器链接器选项(右键单击项目名称 - >设置,编译器): Codelite screenshot
然后我有一个非常简单的程序,它完全由一个main.cpp文件组成:
#include <unittest++/UnitTest++.h>
//See if unit tests are working
TEST(MyMath) {
CHECK(false);
}
int main()
{
UnitTest::RunAllTests();
return 0;
}
此时运行项目会生成其他用户遇到的链接器错误流,例如:
main.cpp:4:对UnitTest::CurrentTest::Details()
此时,我的理解是我现在需要告诉g ++编译器有关目标文件并将它们链接到unittest ++文件。这就是我被困住的地方。我看到唯一的.o文件位于 Debug / main.cpp.o 并运行命令
g ++ main.cpp -o main.cpp.o -Lunittest ++
以及I和o标志的变体,但它们都返回我尝试编译时得到的相同链接器错误。我还尝试在论坛中复制每个g ++行,只会出现各种错误。
我试图在g ++手册页中找到一个解决方案,阅读我一直在使用的标志,并没有推断出解决方案。然后我很快就被埋在了男人入口的大量页面中。 CodeLite和unittest ++的文档似乎已经过时了,所以我在stackoverflow上发布这个作为最后的手段。
我很确定我只是犯了一个菜鸟错误。如果有人有反馈意见,我将不胜感激。
答案 0 :(得分:1)
在您的解释中,您尝试手动链接g++ -c main.cpp -o main.cpp.o -Lunittest++
,但-L
选项提供了搜索库的其他目录的路径。您可能希望-lunittest++
与unittest ++库链接。该库应提供您在&#34;未定义的参考中所看到的符号&#34;错误。
作为旁注,&#34; / usr / include&#34;应该在默认搜索路径中,并且不需要明确添加它。