qt item头文件与cpp不在一个文件夹编译问题

写qt程序的时候经常要将item封装成lib,这样.h和.cpp就不在一个文件夹下,经常会遇到编译问题。

以下是我生产lib的cmake文件。

add_definitions(-DBOOST_NO_MEMBER_TEMPLATE_FRIENDS -DWIN32)
 
find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})
INCLUDE_DIRECTORIES( ${QT_INCLUDE_DIR} )

#qwt
INCLUDE_DIRECTORIES("D:/lib/qwt-6.1.2/src")
link_directories("D:/lib/qwt-6.1.2/lib")

SET(KPS_FLIRT_GUI_MOC_SRCS
    ${${PROJECT_NAME}_SOURCE_DIR}/sdk/include/a.h

}

set(KPS_FLIRT_GUI_SRCS
    a.cpp

)

set(KPS_FLIRT_GUI_UIS
    #ADD UIS FILE HERE ##

 )

set(KPS_FLIRT_GUI_QCCS 
    #ADD .qrc FILE HERE###

)

SET(DEBUG_PFX "")
IF(CMAKE_BUILD_TYPE MATCHES "release")
ELSE(release)
SET(DEBUG_PFX "${DEBUG_PFX}d")
ENDIF(release)

SET(LINUX_LIB "")
if(WIN32)
else(WIN32)
SET(LINUX_LIB 

    "${LINUX_LIB}
    rt"
)
endif(WIN32)

set(KPS_FLIRT_GUI_LIBS
    ${LINUX_LIB}
    ${Boost_LIBRARIES}
)

qt4_automoc(${KPS_FLIRT_GUI_SRCS})

QT4_WRAP_CPP(KPS_FLIRT_GUI_MOC ${KPS_FLIRT_GUI_MOC_SRCS})

QT4_WRAP_UI(KPS_FLIRT_GUI_UIS_H ${KPS_FLIRT_GUI_UIS})

QT4_ADD_RESOURCES(KPS_FLIRT_GUI_QCCS_SRCS ${KPS_FLIRT_GUI_QCCS})

ADD_DEFINITIONS(-D_REENTRANT -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED )

SET(LIB_NAME "libflirtgui${DEBUG_PFX}")

add_library(${LIB_NAME} ${KPS_FLIRT_GUI_SRCS} ${KPS_FLIRT_GUI_MOC} ${KPS_FLIRT_GUI_UIS_H} ${KPS_FLIRT_GUI_QCCS_SRCS} )
target_link_libraries(${LIB_NAME} ${KPS_FLIRT_GUI_LIBS})

其中:qt4_automoc(${KPS_FLIRT_GUI_SRCS})是自动生成.cxx文件

常见错误:

1、编译找不到头文件,这时候注意头文件目录是否正确,不光cpp要修改,同时要触发cmake的编译,只有改对路径不行。

2、item与boost编译冲突,使用Q_MOC_RUN隔离错误

#ifndef Q_MOC_RUN
#include <boost/math/special_functions/bessel.hpp>
#endif

顺便遇到了opengl在vs2010下的错误,error C2146: 语法错误: 缺少“;”(在标识符“******”的前面),傻的不行的头文件包含顺序。#include <windows.h>一定要放在第一个,第一个,第一个,没有之一!!!!

#if defined(_WINDOWS)
#include <windows.h>
#endif

#ifndef Q_MOC_RUN 
#include <GL/gl.h>
#include <GL/glu.h>
#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值