Я использую Qt, CMake и компилятор VS2010.Кажется, есть проблема, когда я связываю небольшой кусочек тестового кода.Компоновщики выдают следующую ошибку:
plotter.cpp.obj : error LNK2001: unresolved external symbol "public: virtual str
uct QMetaObject const * __thiscall Plotter::metaObject(void)const " (?metaObject
@Plotter@@UBEPBUQMetaObject@@XZ)...
(она продолжается некоторое время)
Ошибка возникает, когда я пытаюсь наследовать от QObject в следующем коде:
class Plotter : public QObject
{
Q_OBJECT
public:
Если я опускаю Q_OBJECT, программа связывается, но я не могу использовать слоты классов во время выполнения.Я заметил, что moc-файл не создается для plotter.h.Это мой CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
project (ms)
SET(CMAKE_BUILD_TYPE "Release")
FIND_PACKAGE(Qt4)
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
LINK_LIBRARIES(
${QT_LIBRARIES}
)
set(all_SOURCES plotter.cpp main.cpp dialog.cpp)
QT4_AUTOMOC(${all_SOURCES})
add_executable(ms ${all_SOURCES})
target_link_libraries(ms ${LINK_LIBRARIES})
Файл moc создается для dialog.cpp, но не для plotter.cpp, как это возможно?
Спасибо!