0

我正在使用一个相当大的库,它使用 CMake 进行编译/链接。我需要添加一些功能,因此我需要向库中添加一些类。问题是,当我将一个简单的 helloWorld 类添加到库中并尝试从某个主函数调用它时,我在链接时遇到未定义的引用问题。当我查看构建的代码(库文件夹中的“CMakeFiles”)时,我的类还没有被 CMake 编译(因此,例如,那里没有 HelloWorld.o 文件)。

有人可以指出我哪里出错了吗?我需要明确告诉 CMake 编译这个类吗?(如果是,如何?)。我是 CMake 的新手,所以不知道如何解决这个问题。

我这样调用函数。``

GSROrdinary sord;

我得到的错误消息是这样的。

undefined reference to beep::GSROrdinary::GSROrdinary()
undefined reference to beep::GSROrdinary::~GSROrdinary()
4

2 回答 2

2

是的,你需要告诉 CMake 编译你的类。我建议您查看一些可以在线找到的 CMake 教程。这是一个不错的选择:http ://www.cs.swarthmore.edu/~adanner/tips/cmake.php - 特别注意 CMakeLists.txt 文件和语法。您必须修改 lib 的 CMakeLists.txt 才能添加新类。

于 2011-07-25T19:29:42.003 回答
1

您必须将新文件显式添加到 CMake 文件中,以便它们被编译和链接。

这个带注释的示例可以让您开始(基本上您必须add_library (LIBNAME files)在其中一个 CMakeLists.txt 文件中查找指令并在其中添加新文件,但您也应该阅读文档

于 2011-07-25T19:28:24.233 回答