unresolved external symbol "public: static struct QMetaObject const" when linking to a shared Q_OBJECT

I want to make two QObject libraries using cmake on windows: ProA & ProB, where ProB depend on ProA.

I want to make two QObject libraries using cmake on windows: ProA & ProB, where ProB depend on ProA.

The code of ProA looks like:

class ProA_Export ProA: public QWidget
{
    Q_OBJECT
public:
    ...
};

The CMake script of ProA looks like:

set(CMAKE_AUTOMOC ON)

The ProB links ProA in CMake: target_link_libraries(ProB ProA).

Then, when I #include "ProA.h" in ProB, it reproted:

unresolved external symbol "public: static struct QMetaObject const ProA::staticMetaObject"

And, I can seee mocs_compilation_Debug.cpp in the vs, and the content of mocs_compilation_Debug is #include <EWIEGA46WW/moc_ProA.cpp>. I also find moc_ProA.cpp in build\autogen\include_Debug\EWIEGA46WW\moc_ProA.cpp

If I remove the Q_OBJECT from ProA, everything is OK except that the signal-slot of QT do not work.

So, how can I solve the unresolved external symbol problem caused by Q_OBJECT?

Any suggestion is appreciated~~~

I think figuring out why the moc bits are not being included in the ProA library would be the first place to start. Do you have the link line used for it handy?