2011-07-25 28 views
0

我正在使用一個相當大的庫,它使用CMake進行編譯/鏈接。我需要添加一些功能,因此我需要向庫中添加一些類。問題是,當我添加一個簡單的helloWorld類到庫中,並嘗試從某個主函數調用它時,我在鏈接時就會遇到未定義的引用問題。當我查看構建的代碼(庫文件夾中的「CMakeFiles」)時,我的類尚未被CMake編譯(因此,例如,其中沒有HelloWorld.o文件)。在向庫中添加簡單類時獲取未定義的引用錯誤

有人可以指出我要去哪裏嗎?我是否需要明確地告訴CMake編譯這個類? (如果是,如何?)。我是CMake的新手,所以不知道如何解決這個問題。

我打電話這樣的功能。 ``

GSROrdinary sord; 

錯誤消息,我得到的是這樣的事情。

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

回答

1

你必須明確地將你的新文件添加到CMake文件,以便它們被編譯和鏈接。

commented sample可以給你一個開始(基本上,你必須尋找一個add_library (LIBNAME files)指令在你的CMakeLists.txt文件,並在其中添加新的文件在那裏,但你也應該有可能閱讀documentation

+0

謝謝,這很有幫助 – Ikram

2

是,你需要告訴CMake編譯你的類,我建議你查看一些可以在網上找到的CMake教程,下面是一個很好的教程:http://www.cs.swarthmore.edu/~adanner/tips/cmake.php - 特別注意CMakeLists.txt文件和語法。修改你的lib的CMakeLists.txt以添加一個新的類。

+0

感謝您的提示...... :) – Ikram

相關問題