我构建了一个QT Designer自定义插件,工作得很好..直到我添加一个不在同一个库中的标题...
如果我将其添加到MTBFWidget.cpp / .h:
#include "KinectHandler.h"
找不到插件了。如果我删除它,它的工作原理..这告诉我,它找不到任何外部。我现在真的很困难,我很欣赏各种形式的帮助..我认为我的问题可能是我的CMakeLists.txt,它告诉我如何构建dll / lib ..这是我的CMakeLists.txt:
########### Client Library ###############
find_package( Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED )
include( ${QT_USE_FILE} )
LINK_LIBRARIES( ${QT_LIBRARIES} )
SET (CLIENT_SOURCES client.cpp
mtbf.cpp
pose.cpp
MTBFReader.cpp
KinectHandler.cpp )
SET (CLIENT_HEADERS ${PROJECT_SOURCE_DIR}/include/client.h
${PROJECT_SOURCE_DIR}/include/mtbf.h
${PROJECT_SOURCE_DIR}/include/pose.h
${PROJECT_SOURCE_DIR}/include/MTBFReader.h
${PROJECT_SOURCE_DIR}/include/KinectHandler.h
)
ADD_LIBRARY(client SHARED ${CLIENT_SOURCES} ${CLIENT_HEADERS} ${CLIENT_MOC_SRC} ${UISrcs})
TARGET_LINK_LIBRARIES(client ${QT_LIBRARIES} ${Boost_LIBRARIES} ${ODYSSEUS_LIBRARIES})
###########################QT Designer Plugin ###################
set (PLUGIN_MOC_H ${PROJECT_SOURCE_DIR}/include/MTBFWidgetPlugin.h
${PROJECT_SOURCE_DIR}/include/mtbfwidget.h)
set (PLUGIN_SRCS MTBFWidgetPlugin.cpp
mtbfwidget.cpp)
include_directories(${PROJECT_SOURCE_DIR}/include
${QT_QTDESIGNER_INCLUDE_DIR} )
QT4_WRAP_CPP( MOCsrc ${PLUGIN_MOC_H} )
ADD_LIBRARY(mtbf_plugin SHARED ${MOCsrc} ${PLUGIN_MOC_H} ${PLUGIN_SRCS} )
add_dependencies(mtbf_plugin client )
SET_TARGET_PROPERTIES(mtbf_plugin PROPERTIES COMPILE_FLAGS "${QT_DEFINITIONS} -DQDESIGNER_EXPORT_WIDGETS -DQT_PLUGIN -DQT_NO_DEBUG -DQT_SHARED")
TARGET_LINK_LIBRARIES(mtbf_plugin ${QT_LIBRARIES} client ${Boost_LIBRARIES} ${ODYSSEUS_LIBRARIES})
set( QT_PLUGIN_PATH $ENV{QT_PLUGIN_PATH} )
if( QT_PLUGIN_PATH )
get_target_property( TMP_LIBRARY_PATH mtbf_plugin LOCATION )
add_custom_command( TARGET mtbf_plugin POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy ${TMP_LIBRARY_PATH} ${QT_PLUGIN_PATH}/designer )
endif( QT_PLUGIN_PATH )
编辑:
任何与QT相关的内容包括作品。其他包括外面没有
工作:
#include "QtGui\qabstractbutton.h"
不起作用:
#include "boost\thread.hpp"
奇怪的是,我的程序可以找到所有这些文件,它甚至可以正确编译..
答案 0 :(得分:1)
最后......我找到了解决方案..如果 ANYONE 出现此问题:
您需要将所有外部依赖项(在我的情况下为boost DLL)复制到 Qt / X.X.X / bin 中 夹
为我解决:C:\ Qt \ 4.8.4 \ bin \ boost_system-vc100-mt-1_52.dll需要存在。
还有什么可以帮助找到您的依赖项:下载依赖项检查程序,查看需要哪个.dll,并将其放到Qt bin文件夹中。
答案 1 :(得分:0)
点击这里
include_directories(${PROJECT_SOURCE_DIR}/include
${QT_QTDESIGNER_INCLUDE_DIR} )
我认为您已在此列表中添加了boost include文件夹。并复制此"KinectHandler.h"
将文件存入您的项目目录/ include