mirror of https://github.com/koide3/small_gicp.git
Fix VS2022 build (OpenMP optional) and debugger working directory for examples/tests (#119)
* Pass compile on Windows * Set debugger working diretoriy as project root for examples and tests on Windows
This commit is contained in:
parent
08bc50beff
commit
1d8cce8add
|
|
@ -97,7 +97,10 @@ endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
add_compile_definitions(_USE_MATH_DEFINES)
|
add_compile_definitions(_USE_MATH_DEFINES)
|
||||||
# add_compile_options(/openmp:llvm)
|
add_compile_options(/bigobj)
|
||||||
|
if(BUILD_WITH_OPENMP)
|
||||||
|
add_compile_options(/openmp:llvm)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
##############
|
##############
|
||||||
|
|
@ -247,6 +250,12 @@ if(BUILD_EXAMPLES)
|
||||||
TBB::tbbmalloc
|
TBB::tbbmalloc
|
||||||
PCL::PCL
|
PCL::PCL
|
||||||
)
|
)
|
||||||
|
if(MSVC)
|
||||||
|
set_target_properties(${EXAMPLE_NAME}
|
||||||
|
PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY
|
||||||
|
"${CMAKE_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -273,6 +282,13 @@ if(BUILD_TESTS)
|
||||||
)
|
)
|
||||||
|
|
||||||
gtest_discover_tests(${TEST_NAME} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
gtest_discover_tests(${TEST_NAME} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
set_target_properties(${TEST_NAME}
|
||||||
|
PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY
|
||||||
|
"${CMAKE_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,8 +99,8 @@ protected:
|
||||||
std::string registration_type_; ///< Registration type ("GICP" or "VGICP").
|
std::string registration_type_; ///< Registration type ("GICP" or "VGICP").
|
||||||
bool verbose_; ///< Verbosity flag.
|
bool verbose_; ///< Verbosity flag.
|
||||||
|
|
||||||
std::shared_ptr<KdTree<pcl::PointCloud<PointSource>>> target_tree_; ///< KdTree for target point cloud.
|
std::shared_ptr<small_gicp::KdTree<pcl::PointCloud<PointSource>>> target_tree_; ///< KdTree for target point cloud.
|
||||||
std::shared_ptr<KdTree<pcl::PointCloud<PointSource>>> source_tree_; ///< KdTree for source point cloud.
|
std::shared_ptr<small_gicp::KdTree<pcl::PointCloud<PointSource>>> source_tree_; ///< KdTree for source point cloud.
|
||||||
|
|
||||||
std::shared_ptr<GaussianVoxelMap> target_voxelmap_; ///< VoxelMap for target point cloud.
|
std::shared_ptr<GaussianVoxelMap> target_voxelmap_; ///< VoxelMap for target point cloud.
|
||||||
std::shared_ptr<GaussianVoxelMap> source_voxelmap_; ///< VoxelMap for source point cloud.
|
std::shared_ptr<GaussianVoxelMap> source_voxelmap_; ///< VoxelMap for source point cloud.
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ void RegistrationPCL<PointSource, PointTarget>::setInputSource(const PointCloudS
|
||||||
}
|
}
|
||||||
|
|
||||||
pcl::Registration<PointSource, PointTarget, Scalar>::setInputSource(cloud);
|
pcl::Registration<PointSource, PointTarget, Scalar>::setInputSource(cloud);
|
||||||
source_tree_ = std::make_shared<KdTree<pcl::PointCloud<PointSource>>>(input_, KdTreeBuilderOMP(num_threads_));
|
source_tree_ = std::make_shared<small_gicp::KdTree<pcl::PointCloud<PointSource>>>(input_, KdTreeBuilderOMP(num_threads_));
|
||||||
source_covs_.clear();
|
source_covs_.clear();
|
||||||
source_voxelmap_.reset();
|
source_voxelmap_.reset();
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +56,7 @@ void RegistrationPCL<PointSource, PointTarget>::setInputTarget(const PointCloudT
|
||||||
}
|
}
|
||||||
|
|
||||||
pcl::Registration<PointSource, PointTarget, Scalar>::setInputTarget(cloud);
|
pcl::Registration<PointSource, PointTarget, Scalar>::setInputTarget(cloud);
|
||||||
target_tree_ = std::make_shared<KdTree<pcl::PointCloud<PointTarget>>>(target_, KdTreeBuilderOMP(num_threads_));
|
target_tree_ = std::make_shared<small_gicp::KdTree<pcl::PointCloud<PointTarget>>>(target_, KdTreeBuilderOMP(num_threads_));
|
||||||
target_covs_.clear();
|
target_covs_.clear();
|
||||||
target_voxelmap_.reset();
|
target_voxelmap_.reset();
|
||||||
}
|
}
|
||||||
|
|
@ -214,7 +214,7 @@ void RegistrationPCL<PointSource, PointTarget>::computeTransformation(PointCloud
|
||||||
estimate_covariances_omp(target_proxy, *target_tree_, k_correspondences_, num_threads_);
|
estimate_covariances_omp(target_proxy, *target_tree_, k_correspondences_, num_threads_);
|
||||||
}
|
}
|
||||||
|
|
||||||
Registration<GICPFactor, ParallelReductionOMP> registration;
|
small_gicp::Registration<GICPFactor, ParallelReductionOMP> registration;
|
||||||
registration.criteria.rotation_eps = rotation_epsilon_;
|
registration.criteria.rotation_eps = rotation_epsilon_;
|
||||||
registration.criteria.translation_eps = transformation_epsilon_;
|
registration.criteria.translation_eps = transformation_epsilon_;
|
||||||
registration.reduction.num_threads = num_threads_;
|
registration.reduction.num_threads = num_threads_;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,11 @@
|
||||||
namespace small_gicp {
|
namespace small_gicp {
|
||||||
|
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
|
#ifdef _WIN32
|
||||||
|
#pragma message(__FILE__, " OpenMP is not available.Parallel reduction will be disabled.")
|
||||||
|
#else
|
||||||
#warning "OpenMP is not available. Parallel reduction will be disabled."
|
#warning "OpenMP is not available. Parallel reduction will be disabled."
|
||||||
|
#endif
|
||||||
inline int omp_get_thread_num() {
|
inline int omp_get_thread_num() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue