1.如果在編譯qt項目的時候,一般頭文件里都有Q_OBJECT,但是用cmake來編譯的時候,就會報錯,那么怎么解決呢?
解決的辦法就是要在cmake里面寫好配置 命令,再編譯的時候,就不會報錯了,寫法如下:
project(cmakeandqt)
cmake_minimum_required(VERSION 2.8)
#add qt
FIND_PACKAGE(Qt4 REQUIRED)
set(QT_USE_QTMAIN TRUE)
INCLUDE(${QT_USE_FILE})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
#
#add src
set(cmakeandqt_SRC main.cpp classwizard.cpp Wizard.cpp)
#
#due to the MinGW
#if(MINGW)
# set(CMAKE_RC_COMPILER_INIT windres)
# ENABLE_LANGUAGE(RC)
# set(CMAKE_RC_COMPILE_OBJECT
# "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
#endif(MINGW)
#
#對於含有Q_OBJECT一類宏的代碼(主要是頭文件),需要列出以備交給moc處理
#注意雖然這個命令叫wrap cpp,但實際一般處理的是含有Q_OBJECT代碼的頭文件
qt4_wrap_cpp(cmakeandqt_MOC classwizard.h Wizard.h)
#
#資源文件,如果有的話
set(cmakeandqt_RESOURCES classwizard.qrc)
#添加資源文件rcc文件
qt4_add_resources(cmakeandqt_RCC ${cmakeandqt_RESOURCES})
#也可以這樣直接添加
#qt4_add_resources(cmakeandqt_RCC classwizard.qrc)
#
#ui file
#set(cmakeandqt_UI calculatorform.ui)
#.ui文件需要由uic處理
#qt4_wrap_ui(cmakeandqt_UIC ${cmakeandqt_UI})
#這里出來界面的三大文件,分別為ui,rcc資源文件 和 需要moc處理的文件
#add_executable(${PROJECT_NAME} ${cmakeandqt_SRC} ${cmakeandqt_MOC} ${cmakeandqt_RCC} ${cmakeandqt_UIC})
add_executable(${PROJECT_NAME} ${cmakeandqt_SRC} ${cmakeandqt_MOC} ${cmakeandqt_RCC})
#ADD lib
target_link_libraries(cmakeandqt ${QT_LIBRARIES})
#add debug
set(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
