From d277f53205ce6f506be66ae8dbefa4bd289f403d Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Fri, 12 May 2023 18:36:26 +0300 Subject: [PATCH] Make cupoch/cupoch.h work with a subset of modules --- conanfile.py | 1 + examples/cpp/image.cpp | 6 +--- examples/cpp/kinematics.cpp | 4 +-- examples/cpp/pointcloud.cpp | 6 +--- examples/cpp/registration.cpp | 7 +--- examples/cpp/trianglemesh.cpp | 6 +--- examples/cpp/voxelization.cpp | 10 +----- src/cupoch/camera/CMakeLists.txt | 1 + src/cupoch/collision/CMakeLists.txt | 1 + src/cupoch/cupoch.h | 46 ++++++++++++++++++++----- src/cupoch/geometry/CMakeLists.txt | 1 + src/cupoch/imageproc/CMakeLists.txt | 1 + src/cupoch/integration/CMakeLists.txt | 1 + src/cupoch/io/CMakeLists.txt | 1 + src/cupoch/kinematics/CMakeLists.txt | 1 + src/cupoch/kinfu/CMakeLists.txt | 1 + src/cupoch/knn/CMakeLists.txt | 1 + src/cupoch/odometry/CMakeLists.txt | 1 + src/cupoch/planning/CMakeLists.txt | 1 + src/cupoch/registration/CMakeLists.txt | 1 + src/cupoch/utility/CMakeLists.txt | 1 + src/cupoch/visualization/CMakeLists.txt | 1 + src/python/CMakeLists.txt | 1 + 23 files changed, 60 insertions(+), 41 deletions(-) diff --git a/conanfile.py b/conanfile.py index 0109b975..5b138713 100644 --- a/conanfile.py +++ b/conanfile.py @@ -192,6 +192,7 @@ def package_info(self): # component.requires = MODULE_DEPS.get(module, []) self.cpp_info.libs += [f"cupoch_{module}"] self.cpp_info.libs += mod_lib_deps.get(module, []) + self.cpp_info.defines.append(f"CUPOCH_{module.upper()}_ENABLED") self.cpp_info.libs += ["cupoch_utility"] # Propagate necessary build flags diff --git a/examples/cpp/image.cpp b/examples/cpp/image.cpp index 9d8980cd..db1a474b 100644 --- a/examples/cpp/image.cpp +++ b/examples/cpp/image.cpp @@ -18,11 +18,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. **/ -#include "cupoch/geometry/image.h" -#include "cupoch/io/class_io/image_io.h" -#include "cupoch/utility/console.h" -#include "cupoch/utility/helper.h" -#include "cupoch/visualization/utility/draw_geometry.h" +#include "cupoch/cupoch.h" int main(int argc, char **argv) { using namespace cupoch; diff --git a/examples/cpp/kinematics.cpp b/examples/cpp/kinematics.cpp index e9b488b3..115db9f2 100644 --- a/examples/cpp/kinematics.cpp +++ b/examples/cpp/kinematics.cpp @@ -18,9 +18,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. **/ -#include "cupoch/kinematics/kinematic_chain.h" -#include "cupoch/utility/console.h" -#include "cupoch/visualization/utility/draw_geometry.h" +#include "cupoch/cupoch.h" int main(int argc, char *argv[]) { using namespace cupoch; diff --git a/examples/cpp/pointcloud.cpp b/examples/cpp/pointcloud.cpp index 7138c88b..a8b91228 100644 --- a/examples/cpp/pointcloud.cpp +++ b/examples/cpp/pointcloud.cpp @@ -18,11 +18,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. **/ -#include "cupoch/geometry/pointcloud.h" -#include "cupoch/io/class_io/pointcloud_io.h" -#include "cupoch/utility/console.h" -#include "cupoch/utility/helper.h" -#include "cupoch/visualization/utility/draw_geometry.h" +#include "cupoch/cupoch.h" int main(int argc, char *argv[]) { using namespace cupoch; diff --git a/examples/cpp/registration.cpp b/examples/cpp/registration.cpp index 08a70b93..f2240cf4 100644 --- a/examples/cpp/registration.cpp +++ b/examples/cpp/registration.cpp @@ -18,12 +18,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. **/ -#include "cupoch/geometry/pointcloud.h" -#include "cupoch/io/class_io/pointcloud_io.h" -#include "cupoch/registration/registration.h" -#include "cupoch/utility/console.h" -#include "cupoch/utility/helper.h" -#include "cupoch/visualization/utility/draw_geometry.h" +#include "cupoch/cupoch.h" int main(int argc, char *argv[]) { using namespace cupoch; diff --git a/examples/cpp/trianglemesh.cpp b/examples/cpp/trianglemesh.cpp index db79dd28..930289b6 100644 --- a/examples/cpp/trianglemesh.cpp +++ b/examples/cpp/trianglemesh.cpp @@ -18,11 +18,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. **/ -#include "cupoch/geometry/trianglemesh.h" -#include "cupoch/io/class_io/trianglemesh_io.h" -#include "cupoch/utility/console.h" -#include "cupoch/utility/helper.h" -#include "cupoch/visualization/utility/draw_geometry.h" +#include "cupoch/cupoch.h" int main(int argc, char **argv) { using namespace cupoch; diff --git a/examples/cpp/voxelization.cpp b/examples/cpp/voxelization.cpp index 2f59501f..5d70ceb6 100644 --- a/examples/cpp/voxelization.cpp +++ b/examples/cpp/voxelization.cpp @@ -18,15 +18,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. **/ -#include "cupoch/cupoch_config.h" -#include "cupoch/geometry/geometry.h" -#include "cupoch/geometry/pointcloud.h" -#include "cupoch/geometry/voxelgrid.h" -#include "cupoch/io/class_io/pointcloud_io.h" -#include "cupoch/io/class_io/voxelgrid_io.h" -#include "cupoch/utility/console.h" -#include "cupoch/utility/helper.h" -#include "cupoch/visualization/utility/draw_geometry.h" +#include "cupoch/cupoch.h" using namespace cupoch; diff --git a/src/cupoch/camera/CMakeLists.txt b/src/cupoch/camera/CMakeLists.txt index 008d2138..46673d4a 100644 --- a/src/cupoch/camera/CMakeLists.txt +++ b/src/cupoch/camera/CMakeLists.txt @@ -6,6 +6,7 @@ set(CUPOCH_MODULES ${CUPOCH_MODULES} cupoch_camera PARENT_SCOPE) file(GLOB_RECURSE CAMERA_SOURCE_FILES "*.cpp") add_library(cupoch_camera ${CAMERA_SOURCE_FILES}) add_library(cupoch::camera ALIAS cupoch_camera) +target_compile_definitions(cupoch_camera PUBLIC CUPOCH_CAMERA_ENABLED) target_link_libraries(cupoch_camera PUBLIC cupoch::utility diff --git a/src/cupoch/collision/CMakeLists.txt b/src/cupoch/collision/CMakeLists.txt index 577d9057..5b70800b 100644 --- a/src/cupoch/collision/CMakeLists.txt +++ b/src/cupoch/collision/CMakeLists.txt @@ -10,6 +10,7 @@ find_package(tritriintersect REQUIRED CONFIG) file(GLOB_RECURSE COLLISION_SOURCE_FILES "*.cu") add_library(cupoch_collision ${COLLISION_SOURCE_FILES}) add_library(cupoch::collision ALIAS cupoch_collision) +target_compile_definitions(cupoch_collision PUBLIC CUPOCH_COLLISION_ENABLED) target_link_libraries(cupoch_collision PUBLIC cupoch::geometry diff --git a/src/cupoch/cupoch.h b/src/cupoch/cupoch.h index 7c8b9877..e834d116 100644 --- a/src/cupoch/cupoch.h +++ b/src/cupoch/cupoch.h @@ -1,37 +1,67 @@ #pragma once +#include "cupoch/cupoch_config.h" +#include "cupoch/utility/console.h" +#include "cupoch/utility/eigen.h" +#include "cupoch/utility/filesystem.h" +#include "cupoch/utility/helper.h" + +#ifdef CUPOCH_CAMERA_ENABLED #include "cupoch/camera/pinhole_camera_intrinsic.h" #include "cupoch/camera/pinhole_camera_parameters.h" -#include "cupoch/collision/primitives.h" +#endif + +#ifdef CUPOCH_COLLISION_ENABLED #include "cupoch/collision/collision.h" -#include "cupoch/cupoch_config.h" +#include "cupoch/collision/primitives.h" +#endif + +#ifdef CUPOCH_GEOMETRY_ENABLED #include "cupoch/geometry/boundingvolume.h" #include "cupoch/geometry/distancetransform.h" #include "cupoch/geometry/geometry.h" +#include "cupoch/geometry/graph.h" #include "cupoch/geometry/image.h" #include "cupoch/geometry/lineset.h" -#include "cupoch/geometry/graph.h" #include "cupoch/geometry/pointcloud.h" #include "cupoch/geometry/rgbdimage.h" #include "cupoch/geometry/trianglemesh.h" #include "cupoch/geometry/voxelgrid.h" +#endif + +#ifdef CUPOCH_KNN_ENABLED #include "cupoch/knn/kdtree_flann.h" +#endif + +#ifdef CUPOCH_IO_ENABLED #include "cupoch/io/class_io/ijson_convertible_io.h" #include "cupoch/io/class_io/image_io.h" #include "cupoch/io/class_io/pointcloud_io.h" #include "cupoch/io/class_io/trianglemesh_io.h" #include "cupoch/io/class_io/voxelgrid_io.h" #include "cupoch/io/ros/pointcloud_msg.h" +#endif + +#ifdef CUPOCH_KINEMATICS_ENABLED #include "cupoch/kinematics/kinematic_chain.h" +#endif + +#ifdef CUPOCH_KINFU_ENABLED #include "cupoch/kinfu/kinfu.h" +#endif + +#ifdef CUPOCH_ODOMETRY_ENABLED #include "cupoch/odometry/odometry.h" +#endif + +#ifdef CUPOCH_REGISTRATION_ENABLED #include "cupoch/registration/feature.h" #include "cupoch/registration/registration.h" #include "cupoch/registration/transformation_estimation.h" -#include "cupoch/utility/console.h" -#include "cupoch/utility/eigen.h" -#include "cupoch/utility/filesystem.h" -#include "cupoch/utility/helper.h" +#endif + +#ifdef CUPOCH_VISUALIZATION_ENABLED #include "cupoch/visualization/utility/draw_geometry.h" #include "cupoch/visualization/visualizer/view_control.h" -#include "cupoch/visualization/visualizer/visualizer.h" \ No newline at end of file +#include "cupoch/visualization/visualizer/visualizer.h" +#endif diff --git a/src/cupoch/geometry/CMakeLists.txt b/src/cupoch/geometry/CMakeLists.txt index e75a5328..e6c36536 100644 --- a/src/cupoch/geometry/CMakeLists.txt +++ b/src/cupoch/geometry/CMakeLists.txt @@ -9,6 +9,7 @@ find_package(tritriintersect REQUIRED CONFIG) file(GLOB_RECURSE GEOMETRY_SOURCE_FILES "*.cu") add_library(cupoch_geometry ${GEOMETRY_SOURCE_FILES}) add_library(cupoch::geometry ALIAS cupoch_geometry) +target_compile_definitions(cupoch_geometry PUBLIC CUPOCH_GEOMETRY_ENABLED) target_link_libraries(cupoch_geometry PUBLIC cupoch::utility diff --git a/src/cupoch/imageproc/CMakeLists.txt b/src/cupoch/imageproc/CMakeLists.txt index e190e5c7..53d436ae 100644 --- a/src/cupoch/imageproc/CMakeLists.txt +++ b/src/cupoch/imageproc/CMakeLists.txt @@ -8,6 +8,7 @@ find_package(sgm REQUIRED CONFIG) file(GLOB_RECURSE IMAGEPROC_SOURCE_FILES "*.cpp") add_library(cupoch_imageproc ${IMAGEPROC_SOURCE_FILES}) add_library(cupoch::imageproc ALIAS cupoch_imageproc) +target_compile_definitions(cupoch_imageproc PUBLIC CUPOCH_IMAGEPROC_ENABLED) target_link_libraries(cupoch_imageproc PUBLIC cupoch::geometry diff --git a/src/cupoch/integration/CMakeLists.txt b/src/cupoch/integration/CMakeLists.txt index 2c5fecd6..ecc6dc3a 100644 --- a/src/cupoch/integration/CMakeLists.txt +++ b/src/cupoch/integration/CMakeLists.txt @@ -11,6 +11,7 @@ file(GLOB_RECURSE ALL_CUDA_SOURCE_FILES "*.cu") # create object library add_library(cupoch_integration ${ALL_CUDA_SOURCE_FILES}) add_library(cupoch::integration ALIAS cupoch_integration) +target_compile_definitions(cupoch_integration PUBLIC CUPOCH_INTEGRATION_ENABLED) target_link_libraries(cupoch_integration PUBLIC cupoch::camera diff --git a/src/cupoch/io/CMakeLists.txt b/src/cupoch/io/CMakeLists.txt index 910b3b82..094c8416 100644 --- a/src/cupoch/io/CMakeLists.txt +++ b/src/cupoch/io/CMakeLists.txt @@ -16,6 +16,7 @@ set(IO_ALL_SOURCE_FILES ${IO_CPP_SOURCE_FILES} ${IO_CUDA_SOURCE_FILES}) # Create object library add_library(cupoch_io ${IO_ALL_SOURCE_FILES}) add_library(cupoch::io ALIAS cupoch_io) +target_compile_definitions(cupoch_io PUBLIC CUPOCH_IO_ENABLED) target_link_libraries(cupoch_io PUBLIC cupoch::geometry diff --git a/src/cupoch/kinematics/CMakeLists.txt b/src/cupoch/kinematics/CMakeLists.txt index 5b9e5a25..88e5efad 100644 --- a/src/cupoch/kinematics/CMakeLists.txt +++ b/src/cupoch/kinematics/CMakeLists.txt @@ -10,6 +10,7 @@ file(GLOB_RECURSE KINEMATICS_SOURCE_FILES "*.cpp") # Create object library add_library(cupoch_kinematics ${KINEMATICS_SOURCE_FILES}) add_library(cupoch::kinematics ALIAS cupoch_kinematics) +target_compile_definitions(cupoch_kinematics PUBLIC CUPOCH_KINEMATICS_ENABLED) target_link_libraries(cupoch_kinematics PUBLIC cupoch::collision diff --git a/src/cupoch/kinfu/CMakeLists.txt b/src/cupoch/kinfu/CMakeLists.txt index d481bed5..5cbac558 100644 --- a/src/cupoch/kinfu/CMakeLists.txt +++ b/src/cupoch/kinfu/CMakeLists.txt @@ -8,6 +8,7 @@ file(GLOB_RECURSE KINFU_SOURCE_FILES "*.cpp") # Create object library add_library(cupoch_kinfu ${KINFU_SOURCE_FILES}) add_library(cupoch::kinfu ALIAS cupoch_kinfu) +target_compile_definitions(cupoch_kinfu PUBLIC CUPOCH_KINFU_ENABLED) target_link_libraries(cupoch_kinfu PUBLIC cupoch::camera diff --git a/src/cupoch/knn/CMakeLists.txt b/src/cupoch/knn/CMakeLists.txt index 0a3d3bbb..9e4013ae 100644 --- a/src/cupoch/knn/CMakeLists.txt +++ b/src/cupoch/knn/CMakeLists.txt @@ -12,6 +12,7 @@ file(GLOB_RECURSE ALL_CUDA_SOURCE_FILES "*.cu") # create object library add_library(cupoch_knn ${ALL_CUDA_SOURCE_FILES}) add_library(cupoch::knn ALIAS cupoch_knn) +target_compile_definitions(cupoch_knn PUBLIC CUPOCH_KNN_ENABLED) target_link_libraries(cupoch_knn PUBLIC cupoch::utility diff --git a/src/cupoch/odometry/CMakeLists.txt b/src/cupoch/odometry/CMakeLists.txt index 6f32adca..3c0dca5e 100644 --- a/src/cupoch/odometry/CMakeLists.txt +++ b/src/cupoch/odometry/CMakeLists.txt @@ -9,6 +9,7 @@ file(GLOB_RECURSE ALL_CUDA_SOURCE_FILES "*.cu") # create object library add_library(cupoch_odometry ${ALL_CUDA_SOURCE_FILES}) add_library(cupoch::odometry ALIAS cupoch_odometry) +target_compile_definitions(cupoch_odometry PUBLIC CUPOCH_ODOMETRY_ENABLED) target_link_libraries(cupoch_odometry PUBLIC cupoch::camera diff --git a/src/cupoch/planning/CMakeLists.txt b/src/cupoch/planning/CMakeLists.txt index d84c2338..c41f2feb 100644 --- a/src/cupoch/planning/CMakeLists.txt +++ b/src/cupoch/planning/CMakeLists.txt @@ -6,6 +6,7 @@ set(CUPOCH_MODULES ${CUPOCH_MODULES} cupoch_planning PARENT_SCOPE) file(GLOB_RECURSE ALL_CUDA_SOURCE_FILES "*.cu") add_library(cupoch_planning ${ALL_CUDA_SOURCE_FILES}) add_library(cupoch::planning ALIAS cupoch_planning) +target_compile_definitions(cupoch_planning PUBLIC CUPOCH_PLANNING_ENABLED) target_link_libraries(cupoch_planning PUBLIC cupoch::geometry diff --git a/src/cupoch/registration/CMakeLists.txt b/src/cupoch/registration/CMakeLists.txt index 2eaf3e89..febb9029 100644 --- a/src/cupoch/registration/CMakeLists.txt +++ b/src/cupoch/registration/CMakeLists.txt @@ -8,6 +8,7 @@ find_package(stdgpu REQUIRED CONFIG) file(GLOB_RECURSE ALL_CUDA_SOURCE_FILES "*.cu") add_library(cupoch_registration ${ALL_CUDA_SOURCE_FILES}) add_library(cupoch::registration ALIAS cupoch_registration) +target_compile_definitions(cupoch_registration PUBLIC CUPOCH_REGISTRATION_ENABLED) target_link_libraries(cupoch_registration PUBLIC cupoch::knn diff --git a/src/cupoch/utility/CMakeLists.txt b/src/cupoch/utility/CMakeLists.txt index 765fccd7..c629d0c7 100644 --- a/src/cupoch/utility/CMakeLists.txt +++ b/src/cupoch/utility/CMakeLists.txt @@ -10,6 +10,7 @@ file(GLOB_RECURSE ALL_CPP_SOURCE_FILES "*.cpp") file(GLOB_RECURSE ALL_CUDA_SOURCE_FILES "*.cu") add_library(cupoch_utility ${ALL_CUDA_SOURCE_FILES} ${ALL_CPP_SOURCE_FILES}) add_library(cupoch::utility ALIAS cupoch_utility) +target_compile_definitions(cupoch_utility PUBLIC CUPOCH_UTILITY_ENABLED) target_link_libraries(cupoch_utility PUBLIC cupoch::flags diff --git a/src/cupoch/visualization/CMakeLists.txt b/src/cupoch/visualization/CMakeLists.txt index 60ea0749..de7c711d 100644 --- a/src/cupoch/visualization/CMakeLists.txt +++ b/src/cupoch/visualization/CMakeLists.txt @@ -35,6 +35,7 @@ file(GLOB_RECURSE VISUALIZATION_CUDA_SOURCE_FILES "*.cu") # create object library add_library(cupoch_visualization ${VISUALIZATION_CUDA_SOURCE_FILES} ${VISUALIZATION_CPP_SOURCE_FILES}) add_library(cupoch::visualization ALIAS cupoch_visualization) +target_compile_definitions(cupoch_visualization PUBLIC CUPOCH_VISUALIZATION_ENABLED) add_dependencies(cupoch_visualization shader_file_target) target_link_libraries(cupoch_visualization PUBLIC diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt index 8ba40799..97056f4b 100644 --- a/src/python/CMakeLists.txt +++ b/src/python/CMakeLists.txt @@ -12,6 +12,7 @@ target_link_libraries(${PACKAGE_NAME} PUBLIC pybind11::pybind11) add_library(cupoch_wrapper cupoch_pybind/device_vector_wrapper.cu cupoch_pybind/device_map_wrapper.cu) add_library(cupoch::wrapper ALIAS cupoch_wrapper) +target_compile_definitions(cupoch_wrapper PUBLIC CUPOCH_WRAPPER_ENABLED) target_include_directories(cupoch_wrapper PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} )