ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
One good thing to do would be to just use catkin at the top level, this is the best way to get access (find_package) to all of the packages in the catkin workspace at build time in a single CMake invocation.
Another strategy might be to just have a catkin
workspace in your project and call add_subdirectory
on the catkin
workspace.
Either way I would not call catkin_make
directly from another CMake project. All catkin_make
does is something like this:
# In catkin workspace with packages in the `src` folder
cd src
catkin_init_workspace # This creates the CMakeLists.txt in the top of the workspace
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_SPACE=../devel
make
There is no magic in catkin_make
which is required to build a catkin
workspace. You should be able to copy over the top-level.cmake
file to the catkin
workspace in your project and use add_subdirectory
on it.
2 | No.2 Revision |
One The best practice would be to build the ROS stuff in a catkin workspace and then make install
those packages separate from your other project and then build your project on top of the installed catkin packages, which can be found using find_package
or pkg-config
.
If you are dead set on integrating several catkin packages in to a single CMake project, one good thing to do would be to just use catkin at the top level, this is the best way to get access (find_package) to all of the packages in the catkin workspace at build time in a single CMake invocation.
Another strategy might be to just have a catkin
workspace in your project and call add_subdirectory
on the catkin
workspace.
Either way I would not call catkin_make
directly from another CMake project. All catkin_make
does is something like this:
# In catkin workspace with packages in the `src` folder
cd src
catkin_init_workspace # This creates the CMakeLists.txt in the top of the workspace
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_SPACE=../devel
make
There is no magic in catkin_make
which is required to build a catkin
workspace. You should be able to copy over the top-level.cmake
file to the catkin
workspace in your project and use add_subdirectory
on it.
3 | No.3 Revision |
The best practice would be to build the ROS stuff in a catkin workspace and then make install
those packages separate from your other project and then build your project on top of the installed catkin packages, which can be found using find_package
or pkg-config
.
If you are dead set on integrating several catkin catkin
packages in to a single CMake project, one good thing to do would be to just use catkin at the top level, for all of your project, so that your "larger" project is just another package in the catkin
workspace, this is the best way to get access (find_package) to all of the packages in the catkin catkin
workspace at build time in a single CMake invocation.
Another strategy might be to just have a catkin
workspace in your project and call add_subdirectory
on the catkin
workspace.
Either way I would not call catkin_make
directly from another CMake project. All catkin_make
does is something like this:
# In catkin workspace with packages in the `src` folder
cd src
catkin_init_workspace # This creates the CMakeLists.txt in the top of the workspace
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_SPACE=../devel
make
There is no magic in catkin_make
which is required to build a catkin
workspace. You should be able to copy over the top-level.cmake
file to the catkin
workspace in your project and use add_subdirectory
on it.
4 | No.4 Revision |
The best practice would be to build the ROS stuff in a catkin workspace and then make install
those packages separate from your other project and then build your project on top of the installed catkin packages, which can be found using find_package
or pkg-config
.
The other good thing to do would be to just use catkin
for all of your project, so that your "larger" project is just another package in the catkin
workspace, this is the best way to get access (find_package) to all of the packages in the catkin
workspace at build time in a single CMake invocation, and this is what catkin
was designed to do.
If you are dead set on integrating several catkin
packages in to a single CMake project, one good thing to do would be to just use for all of your project, so that your "larger" project is just another package in the catkin
workspace, this is the best way to get access (find_package) to all of the packages in the catkin
workspace at build time in a single CMake invocation.
Another strategy might be to just have a catkin
workspace in your project and call add_subdirectory
on the catkin
workspace.workspace. I haven't tried this and I am not sure what side effects this might have, but you are welcome to try it.
Either way I would not call catkin_make
directly from another CMake project. All catkin_make
does is something like this:
# In catkin workspace with packages in the `src` folder
cd src
catkin_init_workspace # This creates the CMakeLists.txt in the top of the workspace
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_SPACE=../devel
make
There is no magic in catkin_make
which is required to build a catkin
workspace. You should be able to copy over the top-level.cmake
file to the catkin
workspace in your project and use add_subdirectory
on it.
5 | No.5 Revision |
The best practice would be to build the ROS stuff in a catkin workspace and then make install
those packages separate from your other project and then build your project on top of the installed catkin packages, which can be found using find_package
or pkg-config
.
The other good thing to do would be to just use catkin
for all of your project, so that your "larger" project is just another package in the catkin
workspace, this is the best way to get access (find_package) to all of the packages in the catkin
workspace at build time in a single CMake invocation, and this is what catkin
was designed to do.
If you are dead set on integrating several catkin
packages in to a single CMake project, another strategy might be to just have a catkin
workspace in your project and call add_subdirectory
on the catkin
workspace. I haven't tried this and I am not sure what side effects this might have, but you are welcome to try it.
Either way I would not call catkin_make
directly from another CMake project. All catkin_make
does is something like this:
# In catkin workspace with packages in the `src` folder
cd src
catkin_init_workspace # This creates the CMakeLists.txt in the top of the workspace
cd ..
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_SPACE=../devel
make
There is no magic in catkin_make
which is required to build a catkin
workspace. You should be able to copy over the top-level.cmake
file to the catkin
workspace in your project and use add_subdirectory
on it.
6 | No.6 Revision |
The best practice would be to build the ROS stuff in a catkin catkin
workspace and then make install
those packages separate from your other project and then build your project on top of the installed catkin catkin
packages, which can be found using find_package
or pkg-config
.
The other good thing to do would be to just use catkin
for all of your project, so that your "larger" project is just another package in the catkin
workspace, this is the best way to get access (find_package) (find_package
) to all of the packages in the catkin
workspace at build time in a single CMake invocation, and this is what catkin
was designed to do.
If you are dead set on integrating several catkin
packages in to a single CMake project, another strategy might be to just have a catkin
workspace in your project and call add_subdirectory
on the catkin
workspace. I haven't tried this and I am not sure what side effects this might have, but you are welcome to try it.
Either way I would not call catkin_make
directly from another CMake project. All catkin_make
does is something like this:
# In catkin workspace with packages in the `src` folder
cd src
catkin_init_workspace # This creates the CMakeLists.txt in the top of the workspace
cd ..
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_SPACE=../devel
make
There is no magic in catkin_make
which is required to build a catkin
workspace. You should be able to copy over the top-level.cmake
file to the catkin
workspace in your project and use add_subdirectory
on it.