增加Linux编译脚本
This commit is contained in:
parent
a4f05b7ca9
commit
e25eb291ee
@ -117,6 +117,8 @@ set_target_properties(HoleDetectionLib PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION 1
|
||||
PUBLIC_HEADER "${HOLE_DETECTION_HEADERS}"
|
||||
CXX_VISIBILITY_PRESET hidden
|
||||
VISIBILITY_INLINES_HIDDEN ON
|
||||
)
|
||||
|
||||
# Set UTF-8 encoding for MSVC
|
||||
|
||||
@ -22,6 +22,7 @@ RUN_TESTS=0
|
||||
CLEAN=0
|
||||
ENABLE_OPENMP="OFF"
|
||||
INSTALL=0
|
||||
BUILD_EXAMPLES="ON"
|
||||
EIGEN_HINT=""
|
||||
EIGEN3_DIR_HINT=""
|
||||
BUILD_DIR="" # 将根据 BUILD_TYPE 自动设置
|
||||
@ -40,6 +41,8 @@ show_help() {
|
||||
echo " test 编译后运行测试"
|
||||
echo " clean 清理构建目录后重新编译"
|
||||
echo " openmp 启用 OpenMP 并行支持"
|
||||
echo " example 编译示例程序 (默认开启)"
|
||||
echo " no-example 不编译示例程序"
|
||||
echo " install 编译后安装到系统"
|
||||
echo " --eigen <path> 指定 Eigen 库路径"
|
||||
echo " help 显示此帮助信息"
|
||||
@ -51,6 +54,7 @@ show_help() {
|
||||
echo " ./build.sh clean # 清理当前构建类型的目录"
|
||||
echo " ./build.sh debug clean # 清理 Debug 构建目录"
|
||||
echo " ./build.sh openmp test # 启用 OpenMP 并运行测试"
|
||||
echo " ./build.sh no-example # 不编译示例程序"
|
||||
echo " ./build.sh install # 编译并安装到系统"
|
||||
echo " ./build.sh --eigen /opt/eigen-3.4.0 # 使用自定义 Eigen 路径"
|
||||
echo ""
|
||||
@ -99,6 +103,14 @@ while [[ $# -gt 0 ]]; do
|
||||
INSTALL=1
|
||||
shift
|
||||
;;
|
||||
example)
|
||||
BUILD_EXAMPLES="ON"
|
||||
shift
|
||||
;;
|
||||
no-example)
|
||||
BUILD_EXAMPLES="OFF"
|
||||
shift
|
||||
;;
|
||||
--eigen)
|
||||
if [[ -z "$2" ]]; then
|
||||
echo -e "${RED}[错误]${NC} --eigen 需要一个路径参数"
|
||||
@ -143,13 +155,14 @@ echo ""
|
||||
if [ "$BUILD_TYPE" = "Debug" ]; then
|
||||
BUILD_DIR="build-debug"
|
||||
else
|
||||
BUILD_DIR="build"
|
||||
BUILD_DIR="build-release"
|
||||
fi
|
||||
|
||||
# 显示配置
|
||||
echo -e "${GREEN}构建类型:${NC} $BUILD_TYPE"
|
||||
echo -e "${GREEN}构建目录:${NC} $BUILD_DIR"
|
||||
echo -e "${GREEN}OpenMP:${NC} $ENABLE_OPENMP"
|
||||
echo -e "${GREEN}编译示例:${NC} $BUILD_EXAMPLES"
|
||||
echo -e "${GREEN}运行测试:${NC} $RUN_TESTS"
|
||||
echo -e "${GREEN}安装:${NC} $INSTALL"
|
||||
echo ""
|
||||
@ -212,6 +225,7 @@ echo -e "${YELLOW}[2/4]${NC} 配置 CMake..."
|
||||
|
||||
# 构建 CMake 参数数组(避免命令注入)
|
||||
cmake_args=(.. -DCMAKE_BUILD_TYPE="$BUILD_TYPE" -DENABLE_OPENMP="$ENABLE_OPENMP"
|
||||
-DBUILD_EXAMPLES="$BUILD_EXAMPLES"
|
||||
-DCMAKE_C_COMPILER="${CROSS_PREFIX}-gcc"
|
||||
-DCMAKE_CXX_COMPILER="${CROSS_PREFIX}-g++"
|
||||
)
|
||||
@ -301,6 +315,9 @@ else
|
||||
echo " - Export/arm/release/libHoleDetectionLib.so* (导出的 Release 库)"
|
||||
fi
|
||||
echo " - Export/include/*.h (导出的头文件)"
|
||||
if [ "$BUILD_EXAMPLES" = "ON" ]; then
|
||||
echo " - $BUILD_DIR/examples/ (示例程序)"
|
||||
fi
|
||||
echo ""
|
||||
if [ "$BUILD_TYPE" = "Debug" ]; then
|
||||
echo "Debug 模式:"
|
||||
|
||||
@ -11,6 +11,25 @@
|
||||
|
||||
namespace {
|
||||
|
||||
|
||||
void PrintHoleResult(const SHoleResult& hole, int index) {
|
||||
std::cout << "\nHole #" << index << ":" << std::endl;
|
||||
std::cout << " Center: ("
|
||||
<< hole.center.x << ", "
|
||||
<< hole.center.y << ", "
|
||||
<< hole.center.z << ")" << std::endl;
|
||||
std::cout << " Normal: ("
|
||||
<< hole.normal.x << ", "
|
||||
<< hole.normal.y << ", "
|
||||
<< hole.normal.z << ")" << std::endl;
|
||||
std::cout << " Radius: " << hole.radius << " mm" << std::endl;
|
||||
std::cout << " Depth: " << hole.depth << " mm" << std::endl;
|
||||
std::cout << " Eccentricity: " << hole.eccentricity << std::endl;
|
||||
std::cout << " RadiusVariance: " << hole.radiusVariance << " mm" << std::endl;
|
||||
std::cout << " AngularSpan: " << hole.angularSpan << " deg" << std::endl;
|
||||
std::cout << " QualityScore: " << hole.qualityScore << std::endl;
|
||||
}
|
||||
|
||||
void FilterClusterOutliers(
|
||||
const std::vector<SHoleBoundaryPoint>& boundaryPoints,
|
||||
std::vector<std::vector<int>>& clusters
|
||||
@ -369,21 +388,3 @@ void PrintDetectionResults(const SMultiHoleResult& result, bool verbose) {
|
||||
}
|
||||
std::cout << "=======================================" << std::endl;
|
||||
}
|
||||
|
||||
void PrintHoleResult(const SHoleResult& hole, int index) {
|
||||
std::cout << "\nHole #" << index << ":" << std::endl;
|
||||
std::cout << " Center: ("
|
||||
<< hole.center.x << ", "
|
||||
<< hole.center.y << ", "
|
||||
<< hole.center.z << ")" << std::endl;
|
||||
std::cout << " Normal: ("
|
||||
<< hole.normal.x << ", "
|
||||
<< hole.normal.y << ", "
|
||||
<< hole.normal.z << ")" << std::endl;
|
||||
std::cout << " Radius: " << hole.radius << " mm" << std::endl;
|
||||
std::cout << " Depth: " << hole.depth << " mm" << std::endl;
|
||||
std::cout << " Eccentricity: " << hole.eccentricity << std::endl;
|
||||
std::cout << " RadiusVariance: " << hole.radiusVariance << " mm" << std::endl;
|
||||
std::cout << " AngularSpan: " << hole.angularSpan << " deg" << std::endl;
|
||||
std::cout << " QualityScore: " << hole.qualityScore << std::endl;
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
#include "ErrorCodes.h"
|
||||
#include "../include/VZNL_Types.h"
|
||||
|
||||
// Export macro for Windows DLL
|
||||
// Export macro for shared library
|
||||
#ifdef _WIN32
|
||||
#ifdef HOLE_DETECTION_EXPORTS
|
||||
#define HOLE_DETECTION_API __declspec(dllexport)
|
||||
@ -13,7 +13,11 @@
|
||||
#define HOLE_DETECTION_API __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
#define HOLE_DETECTION_API
|
||||
#ifdef HOLE_DETECTION_EXPORTS
|
||||
#define HOLE_DETECTION_API __attribute__((visibility("default")))
|
||||
#else
|
||||
#define HOLE_DETECTION_API
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -245,12 +249,4 @@ HOLE_DETECTION_API int DetectMultipleHoles(
|
||||
*/
|
||||
HOLE_DETECTION_API void PrintDetectionResults(const SMultiHoleResult& result, bool verbose = true);
|
||||
|
||||
/**
|
||||
* @brief Print a single hole result to console
|
||||
*
|
||||
* @param [in] hole Single hole result
|
||||
* @param [in] index Hole index (for display purposes)
|
||||
*/
|
||||
HOLE_DETECTION_API void PrintHoleResult(const SHoleResult& hole, int index);
|
||||
|
||||
#endif // HOLE_DETECTION_H
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user