2012-03-12 2 views
2

У меня есть небольшой проект Qt4, который я хочу построить с помощью cmake. Он имеет QTcpServer и QThread, которые включают макрос Q_OBJECT. Когда я запускаю make, я всегда получаю RMS Parse Error после генерации qrc_tcpserver.cxx. Выход точный отказ:RCC Parse Ошибка во время make с cmake и Qt4

[ 9%] Generating qrc_tcpserver.cxx 
RCC Parse Error: '/home/path/server/include/tcpserver.h' Line: 1 Column: 1 [error occurred while parsing element] 
make[2]: *** [qrc_tcpserver.cxx] Fehler 1 
make[1]: *** [CMakeFiles/TcpServer.dir/all] Fehler 2 
make: *** [all] Fehler 2 

Мой файл CMake выглядит следующим образом:

set(PROJECT_NAME TcpServer) 
PROJECT(${PROJECT_NAME}) 
cmake_minimum_required(VERSION 2.6) 

# FOR QT4 
find_package(Qt4 REQUIRED COMPONENTS QtCore QtNetwork) 

SET(CMAKE_PACKAGE_QTGUI FALSE) 
SET(QT_WRAP_CPP TRUE) 

set(QT_USE_QTXML TRUE) 

# ENABLE WARNINGS 
ADD_DEFINITIONS(-Wall) 

#FOR GOOGLETEST 
if(test) 
    find_package(GTest REQUIRED) 
    enable_testing() 
endif() 

set(QT_USE_QTNETWORK TRUE) 
set(INCLUDES ${PROJECT_SOURCE_DIR}/include) 

set(${PROJECT_NAME}_Qt_SRC 
    ${INCLUDES}/tcpworkerthread.h 
    ${INCLUDES}/tcpserver.h 
) 

set(${PROJECT_NAME}_Qt_UI 
) 

set(${PROJECT_NAME}_Qt_RES 
) 

INCLUDE(${QT_USE_FILE}) 
ADD_DEFINITIONS(${QT_DEFINITIONS}) 

IF(QT_WRAP_CPP) 
    MESSAGE("Wrap cpp!") 
    QT4_WRAP_CPP(${PROJECT_NAME}_MOC_CPP ${${PROJECT_NAME}_Qt_SRC}) 
ENDIF(QT_WRAP_CPP) 

QT4_WRAP_UI(${PROJECT_NAME}_UI_CPP ${${PROJECT_NAME}_Qt_UI}) 
QT4_ADD_RESOURCES(${PROJECT_NAME}_RES_H ${${PROJECT_NAME}_Qt_SRC}) 

if(test) 
    include_directories(${GTEST_INCLUDE_DIRS} ${INCLUDES} ${QT_QTNETWORK_INCLUDE_DIR}) 
else() 
    include_directories(${INCLUDES} ${QT_QTNETWORK_INCLUDE_DIR}) 
endif() 

if(test) 
    set(${PROJECT_NAME}_SRC_TEST 
     src_test/main.cpp 
     src_test/tcpservertest.cpp 
     src_test/tcpworkerthreadtest.cpp 
) 
    set(PROJECT_TEST_NAME "${PROJECT_NAME}_test") 
    set(${PROJECT_NAME}_SRC 
     src/tcpserver.cpp 
     src/tcpworkerthread.cpp 
    ) 
else() 
    set(${PROJECT_NAME}_SRC 
     main.cpp 
     src/tcpserver.cpp 
     src/tcpworkerthread.cpp 
) 
endif() 

set(${PROJECT_NAME}_LIB 
    ${QT_LIBRARIES} 
    ${QT_QTNETWORK_LIBRARIES} 
) 

if(test) 
    add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SRC}) 
    add_executable(${PROJECT_TEST_NAME} ${${PROJECT_NAME}_SRC_TEST}) 
    target_link_libraries(${PROJECT_TEST_NAME} ${PROJECT_NAME} ${${PROJECT_NAME}_LIB} ${GTEST_BOTH_LIBRARIES} pthread) 
    add_test(${PROJECT_TEST_NAME} ${PROJECT_TEST_NAME}) 
else() 
    add_executable(${PROJECT_NAME} ${${PROJECT_NAME}_SRC} ${${PROJECT_NAME}_MOC_CPP} ${${PROJECT_NAME}_UI_CPP} ${${PROJECT_NAME}_RES_H}) 
    target_link_libraries(${PROJECT_NAME} ${${PROJECT_NAME}_LIB}) 
endif() 

я выполнить его без тестовой переменной, так что это имеет значение ложь (я использую его для создания GTEST, который для меня не так важно, просто для игры).

Любая идея, где мой отказ?

ответ

2

Я не очень знаком с CMake, но кажется, что вы кормите неправильный список файлов до QT4_ADD_RESOURCES.

Линия

QT4_ADD_RESOURCES(${PROJECT_NAME}_RES_H ${${PROJECT_NAME}_Qt_SRC}) 

, вероятно, следует

QT4_ADD_RESOURCES(${PROJECT_NAME}_RES_H ${${PROJECT_NAME}_Qt_RES}) 
+0

Эй, спасибо. Это был провал :-) – EarlOfEgo

Смежные вопросы