我有一个包含 QT4 GUI 的 ROS 包。我的代码在文件夹中
Project_name/src/test/*.cpp
,我的包含在
Project_name/include/test/*.h
某些 qt4 mocs 必须创建,因为某些头文件在其类中包含 Q_OBJECT。
我在 cmake 文件中尝试了
set(CMAKE_AUTOMOC ON)
,但它似乎没有搜索 /include/test/ 文件夹。AUTOMOC 声明可以通过在源文件中搜索 moc_ * *.cpp 文件或通过检查 Q_OBJECT 的头文件来工作。
我还尝试将 a 包含moc_***.cpp
在源文件中(例如/src/test/a.cpp
)。所以它搜索a.h
但找不到它include/test/a.h
。
我必须注意,如果我从类中删除 Q_OBJECT 编译成功,因为 include/ 文件夹是这样添加的:
include_directories( include
${catkin_INCLUDE_DIRS}
)
最后我尝试使用 QT4_WRAP_CPP 但由于某种原因它也找不到 mocs 并且链接失败(尽管在另一个项目中 cmake 文件中具有相同参数的工作:/)
编辑: 找到解决方案。在cpp文件中添加:
#include "../../include/test/moc_a.cpp"
并在包含/测试中找到 .h。
虽然有些事情告诉我这不是正确的方法:P