116 lines
2.9 KiB
Bash
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" |