ThreatSourceLibaray/scripts/pack_native.sh

116 lines
2.9 KiB
Bash

#!/bin/bash
# 获取版本号(从项目文件中)
version=$(grep -o '<Version>[^<]*</Version>' ThreatSource/ThreatSource.csproj | sed 's/<Version>\(.*\)<\/Version>/\1/')
if [ -z "$version" ]; then
echo "Error: Could not find version number in ThreatSource.csproj"
exit 1
fi
# 创建发布目录(如果不存在)
mkdir -p publish
# 设置打包文件名
package_name="ThreatSourceNative-${version}"
package_dir="publish/${package_name}"
# 创建临时目录
mkdir -p "${package_dir}/bin"
mkdir -p "${package_dir}/include"
# 复制文件
cp ThreatSourceNative/bin/Release/x64/ThreatSourceNative.dll "${package_dir}/bin/"
cp ThreatSource/bin/Release/net8.0/ThreatSource.dll "${package_dir}/bin/"
cp ThreatSource/bin/Release/net8.0/ThreatSource.deps.json "${package_dir}/bin/"
cp ThreatSourceNative/include/threat_source.h "${package_dir}/include/"
# 创建说明文件
cat > "${package_dir}/README.md" << EOL
# ThreatSource Native Library
版本:${version}
## 文件说明
- bin/ThreatSourceNative.dll - 原生接口库
- bin/ThreatSource.dll - 核心库
- bin/ThreatSource.deps.json - 依赖配置文件
- include/threat_source.h - C接口头文件
## 使用方法
1. 将 bin 目录下的所有 DLL 文件复制到你的程序目录
2. 将 include 目录下的头文件添加到你的项目中
3. 在代码中包含头文件:
\`\`\`cpp
#include "threat_source.h"
\`\`\`
## 示例代码
\`\`\`cpp
#include "threat_source.h"
#include <stdio.h>
int main() {
// 初始化仿真
if (TS_CreateSimulation() != THREATSOURCE_SUCCESS) {
printf("Failed to create simulation\\n");
return 1;
}
// 创建导弹
const char* missile_id = "missile1";
int result = TS_CreateMissile(
missile_id,
0, 0, 0, // 初始位置
0, 0, 0, // 初始速度
1000, // 最大速度
10, // 最大加速度
30, // 最大飞行时间
5000, // 最大飞行距离
50 // 质量
);
if (result != THREATSOURCE_SUCCESS) {
char error[256];
TS_GetLastError(error, sizeof(error));
printf("Failed to create missile: %s\\n", error);
return 1;
}
// 激活并发射导弹
TS_ActivateMissile(missile_id);
TS_FireMissile(missile_id);
// 仿真主循环
double deltaTime = 0.01;
int is_active = 1;
while (is_active) {
TS_UpdateSimulation(deltaTime);
TS_IsMissileActive(missile_id, &is_active);
}
// 清理
TS_DestroySimulation();
return 0;
}
\`\`\`
## 注意事项
1. 确保所有 DLL 文件在运行时可以被找到
2. 检查每个函数的返回值,确保调用成功
3. 如果函数返回错误,使用 TS_GetLastError 获取详细信息
EOL
# 创建 zip 文件
cd publish
zip -r "${package_name}.zip" "${package_name}"
# 清理临时目录
rm -rf "${package_name}"
echo "Package created: publish/${package_name}.zip"