#!/bin/bash # Script để build và chạy C# example set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" BUILD_DIR="$PROJECT_ROOT/build" LIB_DIR="$BUILD_DIR/src/APIs/c_api" EXAMPLE_DIR="$SCRIPT_DIR" echo "==========================================" echo "Building and Running C# Navigation Example" echo "==========================================" echo "" echo "📁 Paths:" echo " SCRIPT_DIR: $SCRIPT_DIR" echo " PROJECT_ROOT: $PROJECT_ROOT" echo " BUILD_DIR: $BUILD_DIR" echo " LIB_DIR: $LIB_DIR" echo " EXAMPLE_DIR: $EXAMPLE_DIR" echo "" echo "Building C API library..." cd "$BUILD_DIR" cmake .. make echo "Library built successfully!" # Kiểm tra dotnet có được cài đặt không if ! command -v dotnet &> /dev/null; then echo "==========================================" echo "WARNING: .NET SDK not found!" echo "==========================================" echo "To run the C# example, please install .NET SDK:" echo "" echo " Ubuntu/Debian:" echo " wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh" echo " chmod +x dotnet-install.sh" echo " ./dotnet-install.sh --channel 6.0" echo " export PATH=\$PATH:\$HOME/.dotnet" echo "" echo " Or visit: https://dotnet.microsoft.com/download" echo "" echo "Skipping C# example. Library is available at:" echo " $LIB_DIR/libnav_c_api.so" echo "==========================================" exit 0 fi # Bước 2: Tạo C# project nếu chưa có if [ ! -d "$EXAMPLE_DIR/NavigationExample" ]; then echo "Creating C# project..." cd "$EXAMPLE_DIR" dotnet new console -n NavigationExample cd NavigationExample # Tạo .csproj file cat > NavigationExample.csproj << 'EOF' Exe net6.0 linux-x64 true PreserveNewest EOF echo "C# project created!" else echo "C# project already exists" fi # Luôn copy source code mới nhất (cập nhật file nếu đã có) cd "$EXAMPLE_DIR/NavigationExample" echo "Updating Program.cs from CSharpExample.cs..." cp ../CSharpExample.cs Program.cs # Bước 3: Copy library echo "Copying library..." cp "$LIB_DIR/libnav_c_api.so" . # Bước 4: Set LD_LIBRARY_PATH để tìm được tất cả dependencies export LD_LIBRARY_PATH="$LIB_DIR:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Libraries/costmap_2d:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Libraries/geometry2/tf3_geometry_msgs:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Libraries/geometry2/tf3_sensor_msgs:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Packages/move_base:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Cores/move_base_core:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Libraries/tf3:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$BUILD_DIR/src/Navigations/Libraries/robot_time:$LD_LIBRARY_PATH" # Bước 5: Build và chạy echo "Building C# project..." dotnet build echo "" echo "Running example..." echo "==========================================" echo "LD_LIBRARY_PATH includes:" echo "$LD_LIBRARY_PATH" | tr ':' '\n' | head -5 echo "..." echo "==========================================" dotnet run echo "==========================================" echo "Done!"