尝试使用cmake生成Qt moc文件时出错

时间:2016-07-14 11:24:49

标签: c++ qt cmake

我正在尝试构建一个使用QObject的exacutable,所以我必须使用moc来生成元数据文件。我有以下CMakeList:

PROJECT(dald)
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
CMAKE_POLICY(SET CMP0015 NEW)
###########################
# COMPILATION DEFINITIONS #
###########################
ADD_DEFINITIONS(-Wall -std=c++11)
#####################################
# INCLUDE USED MACROS AND FUNCTIONS #
#####################################
FILE(GLOB MODULES CMake/modules/*.cmake)
FOREACH(MODULE ${MODULES})
    INCLUDE(${MODULE})
ENDFOREACH(MODULE)
###########################
# ADD PROJECT DEFINITIONS #
###########################
SET(CPPUTEST CppUTest CppUTestExt)
SET(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
SET(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
SET(MOCKS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mocks)
FILE(GLOB_RECURSE SRC src/*.cpp)
FILE(GLOB_RECURSE MOCKS mocks/*.cpp)
INCLUDE_DIRECTORIES(include)
##################
# CONFIGURE LIBS #
##################
SET(LIBS)
# Configure BOOST
SET(BOOST_MODULES thread system)
CONFIGURE_BOOST(${BOOST_MODULES})
# Configure Qt5
SET(QT5_MODULES Core DBus)
CONFIGURE_QT5("${QT5_MODULES}")
set(QT_HEADERS
    include/networkconfigendpoint.h
)
QT5_WRAP_CPP(MOC_SRCS ${QT_HEADERS})
######################
# TARGET DEFINITIONS #
######################
# Fake target add only to make the headers visible in Qt Creator
FILE(GLOB_RECURSE LibFiles "include/*.h")
ADD_CUSTOM_TARGET(headers SOURCES ${LibFiles})
# Fake target add only to make the headers visible in Qt Creator
FILE(GLOB_RECURSE SrcFiles "src/*.cpp")
ADD_CUSTOM_TARGET(sources SOURCES ${SrcFiles})
# Fake target add only to make the headers visible in Qt Creator
FILE(GLOB_RECURSE MocksFiles "mocks/*.cpp")
ADD_CUSTOM_TARGET(mocks SOURCES ${MocksFiles})
# executable
add_executable(dald ${SRC} ${MOC_SRCS})
TARGET_LINK_LIBRARIES(dald ${LIBS})

,编译输出如下:

[ 20%] Generating include/moc_networkconfigendpoint.cpp
/bin/sh: 1: @/home/pawel/.CLion2016.1/system/cmake/generated/dal-1d1e3f88/1d1e3f88/Debug/include/moc_networkconfigendpoint.cpp_parameters: not found
CMakeFiles/dald.dir/build.make:61: command for object 'include/moc_networkconfigendpoint.cpp' 
make[2]: *** [include/moc_networkconfigendpoint.cpp] Error 127

此cmake的rsult只是moc_networkconfigendpoint.cpp_parameters文件,其中包含:

-I/home/pawel/Downloads/dal/include
-I/home/pawel/Downloads/dal/include
-I/usr/include
-o
/home/pawel/Downloads/dal/build/include/moc_networkconfigendpoint.cpp
/home/pawel/Downloads/dal/include/networkconfigendpoint.h

任何人都可以帮忙吗?我也试过使用SET(CMAKE_AUTOMOC ON)但是在这种情况下,我在连接不存在的moc文件时没有moc结果和错误。

===== PS。 CONFIGURE_QT5

的正文
FUNCTION(configure_qt5 QT5_MODULES)
    FOREACH(QT5_MODULE ${QT5_MODULES})
        FIND_PACKAGE(Qt5${QT5_MODULE})
        SET(LIB_NAME "Qt5::${QT5_MODULE}")
        LIST(APPEND LIBS ${LIB_NAME})
    ENDFOREACH(QT5_MODULE)
    SET(LIBS ${LIBS} PARENT_SCOPE)
    MESSAGE(STATUS "Configuring Qt5 - done")
ENDFUNCTION(configure_qt5)

0 个答案:

没有答案