我正在尝试在 Windows 上使用 cmake 制作两个 QObject 库,其中一个库依赖于另一个库。如果我将它们都构建为静态库,它就可以工作,但现在我需要将它们构建为共享库,我不断收到编译错误。
我正在使用 Visual Studio 19 进行编译。
有问题的代码的一个小例子:
第一图书馆:
#include <QObject>
class A: public QObject
{
Q_OBJECT
public:
A(const QString& name){}
public Q_SLOTS:
void ASlot(){}
};
Run Code Online (Sandbox Code Playgroud)
第二图书馆
#include "A.hpp"
class B: public A {
Q_OBJECT
public:
B():A("A"){}
private Q_SLOTS:
void BSlot(){}
};
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt:
project(test)
cmake_minimum_required(VERSION 3.10)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Modules")
find_package(Qt5Core REQUIRED)
set(CMAKE_AUTOMOC ON)
add_library(A SHARED A.hpp)
target_link_libraries(A ${Qt5Core_LIBRARIES})
set_target_properties(A PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
add_library(B SHARED B.hpp)
target_link_libraries(B A ${Qt5Core_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
该代码已被验证可以在 Linux …