c++ - 使用 cmake 和 Qt4 进行 make 时出现 RCC 解析错误

标签 c++ qt4 makefile cmake rcc

我有一个小型 Qt4 项目,我想用 cmake 构建它。 它有一个QTcpServer和一个QThread,它们都包含Q_OBJECT宏。 当我运行 make 时,生成 qrc_tcpserver.cxx 后总是收到 RCC 解析错误。 确切的失败输出是:

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

我在没有测试变量的情况下执行它,所以它设置为 false(我用它来生成 gtest,这对我来说并不那么重要,只是为了玩玩)。

知道我的失败在哪里吗?

最佳答案

我不太熟悉 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})

关于c++ - 使用 cmake 和 Qt4 进行 make 时出现 RCC 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667767/

相关文章:

c++ - 套接字编程 : 'accept: Bad file descriptor'

python - PyQt4:获取QListWidget中所有标签的列表

c++ - Makefile:没有规则来制作目标。停止

C++ Makefile %.c 有效,%.cpp 无效?

c# - 解压Zlib数据

c++ - 以基类作为数据成员的派生类?

c++ - "lock add"在x86处理器上是如何实现的

python - 如果涉及最后一行,QPlainTextEdit 中的取消缩进功能会导致段错误

ruby - 如何强制 Qt 小部件保持相等的高度和宽度?

c - 错误 : 'strdup' was not declared in this scope