c++qt4makefilecmakercc

RCC Parse Error during make with cmake and Qt4


I have a small Qt4 project which I want to build with cmake. It has a QTcpServer and a QThread, which both include the Q_OBJECT macro. When I'm running make I always get an RCC Parse Error after generating qrc_tcpserver.cxx. The exact failure output is:

[  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

My cmake file looks like this:

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()

I execute it without test variable, so this is set to false(I use it for generating gtest, which is not so important for me, just for playing around).

Any idea where my failure is?


Solution

  • I'm not very familar with CMake, but it seems you're feeding a wrong list of files to QT4_ADD_RESOURCES.

    The line

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

    should probably be

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