我正在嘗試使我的其他Qt項目可以使用的共享庫。在圖書館裏我有一個類,類似於此:Cmake庫與Qt對象?
A.h
class A : public QWidget
{
Q_OBJECT
public:
A(QWidget *parent = 0);
~A();
protected:
void overriddenQtFunc() Q_DECL_OVERRIDE; // Overriding a QtWidget function.
// other variables and functions here...
}
A.cpp
A::A(QWidget *parent):QWidget(parent){}
A::~A(){}
void A::overriddenQtFunc(){ // Custom implementation here... }
// Other function implementations.
看起來我對圖書館的CMake如下:
cmake_minimum_required(VERSION 3.0.2)
set(LIB_NAME "TestLib")
find_package(QT5Widgets)
include_directories("includes") # Where my A.h file lives along with
# my other custom library code.
set(SRCS # Source list here)
set(HDRS # Header list here)
add_library(${LIB_NAME} ${SRCS} ${HDRS})
target_include_directories(${LIB_NAME} PRIVATE ${Qt5Widgets_INCLUDE_DIRS})
target_include_directories(${LIB_NAME} PUBLIC "includes")
一切編譯和工作正常,當我把「Q_OBJECT」出來的類與我的重寫方法。否則,當我想和他們一起編譯,我得到
LNK2001: unresolved external symbol "protected: virtual void __thiscall A::overriddenQtFunc(void)"
有沒有別的東西,我需要做的就是它正確鏈接?它是否與我的來源不被「moc」編輯有關?
在'A.cpp'你:'無效overriddenQtFunc(){'難道不應該是:'無效A :: overriddenQtFunc(){'這樣你就不會定義免費功能與A類無關?或者你的例子錯了? – drescherjm
你是@drescherjm。編輯。 – MrJman006