Skip to content

Commit 55ae030

Browse files
committed
Create a build script for the Windows version
1 parent cce8e8f commit 55ae030

File tree

3 files changed

+146
-2
lines changed

3 files changed

+146
-2
lines changed

README.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,39 @@ npm run tauri:dev
3838

3939
## Building
4040

41-
To build the application:
41+
### macOS Universal Build
42+
43+
To build a universal macOS application (Intel + Apple Silicon):
44+
45+
```bash
46+
npm run tauri:build:universal
47+
```
48+
49+
### Windows Build
50+
51+
To build a Windows executable from macOS:
52+
53+
1. Install required tools:
54+
55+
```bash
56+
brew install mingw-w64 llvm nsis
57+
```
58+
59+
2. Run the Windows build script:
60+
61+
```bash
62+
npm run build:windows
63+
```
64+
65+
Or manually:
66+
67+
```bash
68+
npm run tauri:build:windows
69+
```
70+
71+
### Standard Build
72+
73+
To build the application for your current platform:
4274

4375
```bash
4476
npm run tauri:build

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
"pre-dev": "npm run type-check && npm run lint",
1414
"tauri:dev": "npm run pre-dev && tauri dev",
1515
"tauri:build": "npm run pre-dev && tauri build",
16-
"tauri:build:universal": "npm run pre-dev && tauri build --target universal-apple-darwin"
16+
"tauri:build:universal": "npm run pre-dev && tauri build --target universal-apple-darwin",
17+
"tauri:build:windows": "npm run pre-dev && tauri build --target x86_64-pc-windows-gnu",
18+
"build:windows": "./script/build-windows.sh"
1719
},
1820
"dependencies": {
1921
"@tauri-apps/api": "^2.8.0",

script/build-windows.sh

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
#!/bin/bash
2+
3+
# Windows版ビルド用シェルスクリプト
4+
# macOSからWindows用の実行ファイルをビルドします
5+
6+
set -e # エラーが発生したら即座に終了
7+
8+
# スクリプトのディレクトリを取得
9+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10+
# プロジェクトルートに移動(scriptディレクトリから1つ上)
11+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
12+
cd "$PROJECT_ROOT"
13+
14+
echo "Lightning Timer Windows版ビルドを開始します..."
15+
16+
# 必要なツールがインストールされているかチェック
17+
echo "📋 必要なツールをチェック中..."
18+
19+
# mingw-w64のチェック
20+
if ! command -v x86_64-w64-mingw32-gcc &> /dev/null; then
21+
echo "mingw-w64がインストールされていません"
22+
echo "以下のコマンドでインストールしてください:"
23+
echo "brew install mingw-w64"
24+
exit 1
25+
fi
26+
27+
# llvmのチェック
28+
LLVM_RC_PATH=""
29+
if command -v llvm-rc &> /dev/null; then
30+
LLVM_RC_PATH="llvm-rc"
31+
else
32+
# Homebrewのllvmのbinディレクトリを探す
33+
for llvm_path in /opt/homebrew/Cellar/llvm/*/bin/llvm-rc /usr/local/Cellar/llvm/*/bin/llvm-rc; do
34+
if [ -f "$llvm_path" ]; then
35+
LLVM_RC_PATH="$llvm_path"
36+
break
37+
fi
38+
done
39+
40+
if [ -z "$LLVM_RC_PATH" ]; then
41+
echo "llvmがインストールされていません"
42+
echo "以下のコマンドでインストールしてください:"
43+
echo "brew install llvm"
44+
exit 1
45+
fi
46+
fi
47+
48+
# nsisのチェック
49+
if ! command -v makensis &> /dev/null; then
50+
echo "nsisがインストールされていません"
51+
echo "以下のコマンドでインストールしてください:"
52+
echo "brew install nsis"
53+
exit 1
54+
fi
55+
56+
# RustのWindowsターゲットのチェックとインストール
57+
echo "RustのWindowsターゲットをチェック中..."
58+
59+
# rustupがインストールされているかチェック
60+
if ! command -v rustup &> /dev/null; then
61+
echo "📦 rustupをインストール中..."
62+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
63+
source ~/.cargo/env
64+
fi
65+
66+
# Windowsターゲットがインストールされているかチェック
67+
if ! rustup target list --installed | grep -q "x86_64-pc-windows-gnu"; then
68+
echo "Windowsターゲットがインストールされていません"
69+
echo "Windowsターゲットを追加中..."
70+
rustup target add x86_64-pc-windows-gnu
71+
else
72+
echo "Windowsターゲットは既にインストールされています"
73+
fi
74+
75+
echo "必要なツールがすべてインストールされています"
76+
77+
# 環境変数を設定
78+
echo "環境変数を設定中..."
79+
# llvmのbinディレクトリをPATHに追加
80+
if [ -n "$LLVM_RC_PATH" ]; then
81+
LLVM_BIN_DIR="$(dirname "$LLVM_RC_PATH")"
82+
export PATH="$LLVM_BIN_DIR:$PATH"
83+
fi
84+
export CC_x86_64_pc_windows_gnu=x86_64-w64-mingw32-gcc
85+
export CXX_x86_64_pc_windows_gnu=x86_64-w64-mingw32-g++
86+
export AR_x86_64_pc_windows_gnu=x86_64-w64-mingw32-ar
87+
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc
88+
89+
echo "フロントエンドをビルド中..."
90+
npm run build
91+
92+
echo "Rustアプリケーションをビルド中..."
93+
npm run tauri:build -- --target x86_64-pc-windows-gnu
94+
95+
# セットアップファイルの生成を確認
96+
SETUP_FILE="src-tauri/target/x86_64-pc-windows-gnu/release/bundle/nsis/Lightning Timer_0.1.0_x64-setup.exe"
97+
if [ -f "$SETUP_FILE" ]; then
98+
echo "セットアップファイルが正常に生成されました"
99+
else
100+
echo "セットアップファイルの生成に失敗しました"
101+
exit 1
102+
fi
103+
104+
echo "Windows版ビルドが完了しました!"
105+
echo ""
106+
echo "ビルド成果物:"
107+
echo " 実行ファイル: src-tauri/target/x86_64-pc-windows-gnu/release/lightning-timer.exe"
108+
echo " インストーラー: src-tauri/target/x86_64-pc-windows-gnu/release/bundle/nsis/Lightning Timer_0.1.0_x64-setup.exe"
109+
echo ""
110+
echo "ビルドが正常に完了しました!"

0 commit comments

Comments
 (0)