带有 Qt 对象的 Cmake 库
Cmake Library With Qt Object?
我正在尝试创建一个共享库,我的其他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"ed有关吗?
试试这个
set(CMAKE_AUTOMOC ON)
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 如何创建一个共享对象与另一个.所以在Cmake
- mingw32-make 使用"MinGW Makefiles"生成器跟踪 CMAKE 无法将可执行文件链接到对象库
- 在对象库中包含 CMake 目标的标头
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- Cmake:使用导入的对象
- cmake/make(对象)依赖性问题 - 标头更改时而不是重建
- 将 CMake 构建的库链接到预构建的对象文件
- CMake:无法打开共享对象文件:没有此类文件或目录
- 如何在 CMake 中测量每个对象的编译时间
- 在 cmake 中链接 Qt 对象
- 使用CMake时如何避免"无法打开共享对象文件"?
- cmake,我可以从可执行对象构建一个库吗?
- CMake add_library( 对象 ) 是否有环境变量<lib><src>?
- 带有 Qt 对象的 Cmake 库
- CMake 不生成依赖对象文件
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- CMake对象库包含main
- 在Android上使用cmake时,将共享对象复制到jniLibs中