QT4 GUI を含む ROS パッケージがあります。私のコードはフォルダー
Project_name/src/test/*.cpp
にあり、私のインクルードは
Project_name/include/test/*.h
一部のヘッダー ファイルにはクラスに Q_OBJECT が含まれているため、一部の qt4 moc を作成する必要があります。
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
。
include/ フォルダーが次のように追加されるため、クラスから Q_OBJECT を削除すると、コンパイルが成功することに注意する必要があります。
include_directories( include
${catkin_INCLUDE_DIRS}
)
最後に、QT4_WRAP_CPP を使用しようとしましたが、何らかの理由で mocs を見つけることができず、リンクが失敗しました (ただし、cmake ファイルで同じパラメーターを持つ別のプロジェクトでは動作します:/)
編集: 解決策が見つかりました。cpp ファイルに次のように追加されました。
#include "../../include/test/moc_a.cpp"
インクルード/テストで.hを見つけました。
それは正しい方法ではないと何かが私に言っていますが:P