Export header in devel/include
ClementLeBihan opened this issue · 12 comments
Hi,
I'm trying to use jsk_rviz_plugins objects in an other package, but headers are not found.
To reproduce the error, pull jsk_visualization repo in an empty catkin workspace, launch catkin_make and checkout in devel/include/jsk_rviz_plugins, there is no bounding_box_display_common.h for example.
If I want to use these header from an other package (#include <jsk_rviz_plugins/bounding_box_display_common.h>), what should I do in jsk_rviz_plugins CMakeLists to export headers ?
Thank you for your help,
Best,
Clément
can you try
$ git diff
diff --git a/jsk_rviz_plugins/CMakeLists.txt b/jsk_rviz_plugins/CMakeLists.txt
index cd771db..6d502c4 100644
--- a/jsk_rviz_plugins/CMakeLists.txt
+++ b/jsk_rviz_plugins/CMakeLists.txt
@@ -49,7 +49,7 @@ catkin_package(
DEPENDS rviz
CATKIN_DEPENDS jsk_hark_msgs jsk_footstep_msgs
jsk_recognition_utils cv_bridge people_msgs image_geometry
- INCLUDE_DIRS # TODO include
+ INCLUDE_DIRS src
LIBRARIES ${PROJECT_NAME}
)
???
Hi @k-okada and thanks for your answer !
I tryied but it doesn't work. Did it worked on your side ?
Best,
Clément
You don't necessary need to create a package, just execute this :
cd catkin_ws/src/
git clone https://github.com/jsk-ros-pkg/jsk_visualization.git
cd ../
catkin_make
Then checkout in devel/include/jsk_rviz_plugins, you won't see bounding_box_display_common.h for example ...
Here is an example with a test package :
catkin_create_pkg test roscpp jsk_rviz_plugins
nano src/test/src/test_node.cpp
Use this hello world code :
#include <jsk_rviz_plugins/bounding_box_display_common.h>
#include <iostream>
#include <iomanip>
#include <cstdlib>
int main(int argc, char *argv[])
{
std::cout << "Hello world ! " << std::endl;
return 0;
}
and uncomment add_executable(${PROJECT_NAME}_node src/test_node.cpp)
in CMakeLists.
When catkin_make is executed, you'll have fatal error: jsk_rviz_plugins/bounding_box_display_common.h: No such file or directory
it seems devel
does not work well with src/*.h
style + catkin_package INCLUDE_DIRS
, but install
probably works.
https://github.com/jsk-ros-pkg/jsk_visualization/blob/master/jsk_rviz_plugins/CMakeLists.txt#L237-L240
How about building the workspace with install like catkin config --install
? or using released jsk_rviz_plugins
?
$ ls /opt/ros/melodic/include/jsk_rviz_plugins/bounding_box_* -alF
-rw-r--r-- 1 root root 3480 10月 17 2020 /opt/ros/melodic/include/jsk_rviz_plugins/bounding_box_array_display.h
-rw-r--r-- 1 root root 3432 10月 17 2020 /opt/ros/melodic/include/jsk_rviz_plugins/bounding_box_display.h
-rw-r--r-- 1 root root 15849 10月 17 2020 /opt/ros/melodic/include/jsk_rviz_plugins/bounding_box_display_common.h
Anyway, we should make jsk_rviz_plugins/include/jsk_rviz_plugins/
directory and move all the headers to solve this issue if you still want to use devel
workspace.
Yes I know release package put the header in include directory, but I wanted to make it works by using source package in catkin workspace.
Does'nt seems to work with catkin config --install
neither.
sudo apt update
sudo apt install python-catkin-tools
mkdir test_ws/src -p
cd test_ws/src
git clone https://github.com/jsk-ros-pkg/jsk_rviz_plugins.git
cd ../
catkin config --install
catkin build
# source not devel but install
source install/setup.bash
it works for me.
[knorth55][melodic-p50][/tmp/test_ws/install/include/jsk_rviz_plugins]
$ ls -alF bounding*
-rw-r--r-- 1 knorth55 knorth55 3480 10月 5 23:35 bounding_box_array_display.h
-rw-r--r-- 1 knorth55 knorth55 3432 10月 5 23:35 bounding_box_display.h
-rw-r--r-- 1 knorth55 knorth55 15849 10月 5 23:35 bounding_box_display_common.h
@ClementLeBihan please check if #833 solves your problem.
Does'nt seems to work with catkin config --install neither.
please put error code when you have problem. Is it something like
[test:make] In file included from /tmp/hoge/install/include/jsk_rviz_plugins/bounding_box_display_common.h:42:0,
[test:make] from /tmp/hoge/src/test/src/test_node.cpp:1:
[test:make] /opt/ros/melodic/include/rviz/properties/color_property.h:32:10: fatal error: QColor: No such file or directory
[test:make] #include <QColor>
[test:make] ^~~~~~~~
???
in this case, you need to add
find_package(Qt4 COMPONENTS QtCore QtGui REQUIRED)
include(${QT_USE_FILE})
or
find_package(Qt5Widgets REQUIRED)
on your CMakeLists.txt of your test
package.
#833 does not need to child package to set something like this, but not sure if this is right design....
Yes it solves my problem :)
Thank you for your quick support !
Best,
Clément