Skip to content

Commit d6bbab8

Browse files
authored
重写 HMCLauncher (#3)
1 parent ee3a062 commit d6bbab8

34 files changed

+777
-988
lines changed

.clang-format

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Use the Google style in this project.
22
BasedOnStyle: Google
3+
ColumnLimit: 120
34

45
SortIncludes: false

.github/workflows/build.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,23 @@ jobs:
2929
java-version: 11
3030
java-package: 'jdk+fx'
3131
- name: Build HMCLauncher
32-
run: msbuild /p:Configuration=Release /t:Rebuild .
32+
run: |
33+
cmake -A Win32 -B build
34+
cmake --build build --config Release
3335
- name: Create checksum file
34-
run: Out-File -InputObject (Get-FileHash -Path .\Release\HMCLauncher.exe -Algorithm SHA256).Hash.ToLower() -FilePath .\Release\HMCLauncher.exe.sha256 -NoNewline
36+
run: Out-File -InputObject (Get-FileHash -Path build\Release\HMCLauncher.exe -Algorithm SHA256).Hash.ToLower() -FilePath build\Release\HMCLauncher.exe.sha256 -NoNewline
3537
- name: Build HMCL
3638
run: |
37-
$env:HMCL_LAUNCHER_EXE="$env:GITHUB_WORKSPACE\Release\HMCLauncher.exe"
38-
Set-Location HMCL-Build
39+
$env:HMCL_LAUNCHER_EXE="$env:GITHUB_WORKSPACE\build\Release\HMCLauncher.exe"
40+
Set-Location "$env:GITHUB_WORKSPACE\HMCL-Build"
3941
.\gradlew makeExecutables --no-daemon
4042
- name: Copy Artifacts
4143
run: |
4244
New-Item -Type Directory -Path Artifacts
4345
Copy-Item -Path HMCL-Build\HMCL\build\libs\*.exe -Destination Artifacts
4446
Copy-Item -Path HMCL-Build\HMCL\build\libs\*.exe.sha256 -Destination Artifacts
45-
Copy-Item -Path Release\HMCLauncher.exe -Destination Artifacts
46-
Copy-Item -Path Release\HMCLauncher.exe.sha256 -Destination Artifacts
47+
Copy-Item -Path build\Release\HMCLauncher.exe -Destination Artifacts
48+
Copy-Item -Path build\Release\HMCLauncher.exe.sha256 -Destination Artifacts
4749
- name: Upload Artifacts
4850
uses: actions/upload-artifact@v4
4951
with:

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ Release
44
*.APS
55
cmake-build-*/
66
.idea/
7-
publish/libs
7+
publish/libs
8+
/build/

CMakeLists.txt

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,38 @@
1-
cmake_minimum_required(VERSION 3.25)
2-
project(HMCLauncher)
3-
if(MSVC)
4-
add_definitions(-DUNICODE -D_UNICODE)
5-
add_compile_options(/utf-8 /W4)
1+
cmake_minimum_required(VERSION 3.16)
2+
project(HMCLauncher
3+
LANGUAGES CXX
4+
VERSION 3.6.0.2
5+
)
6+
7+
set(CMAKE_CXX_STANDARD 20)
8+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
9+
10+
set(CMAKE_WIN32_EXECUTABLE ON)
11+
12+
add_compile_definitions(UNICODE _UNICODE)
13+
add_compile_definitions(WINVER=0x0601 _WIN32_WINNT=0x0601) # Windows 7
14+
15+
if (MSVC)
16+
add_compile_options(/utf-8 /W4 /MT)
617
add_link_options(/ENTRY:wWinMainCRTStartup)
7-
else()
18+
else ()
819
add_compile_options(-municode -Wall -Wextra -Wpedantic)
9-
add_link_options(-municode)
10-
endif()
11-
OPTION(ENABLE_MINGW_STATIC_LINK_LIBSTDCXX "Link the C++ standard library statically to the executable file(mingw only)." ON)
12-
if(ENABLE_MINGW_STATIC_LINK_LIBSTDCXX AND MINGW)
13-
add_link_options(-static)
14-
endif()
15-
set(CMAKE_WIN32_EXECUTABLE ON)
16-
add_executable(HMCLauncher WIN32 HMCL/HMCL.rc HMCL/java.cpp HMCL/main.cpp HMCL/os.cpp HMCL/stdafx.cpp HMCL/Version.cpp)
17-
target_link_libraries(HMCLauncher Version)
18-
install(TARGETS HMCLauncher)
20+
add_link_options(-municode -static)
21+
endif ()
22+
23+
include_directories(${CMAKE_CURRENT_BINARY_DIR})
24+
25+
configure_file(HMCL.ico ${CMAKE_CURRENT_BINARY_DIR}/HMCL.ico COPYONLY)
26+
configure_file(HMCL/HMCL.rc.in ${CMAKE_CURRENT_BINARY_DIR}/HMCL.rc @ONLY)
27+
configure_file(HMCL/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY)
28+
29+
add_executable(HMCLauncher WIN32
30+
${CMAKE_CURRENT_BINARY_DIR}/HMCL.rc
31+
HMCL/main.cpp
32+
HMCL/platform.cpp HMCL/platform.h
33+
HMCL/i18n.cpp HMCL/i18n.h
34+
HMCL/java.cpp HMCL/java.h
35+
HMCL/path.cpp HMCL/path.h
36+
HMCL/debug.cpp HMCL/debug.h
37+
)
38+
target_link_libraries(HMCLauncher PRIVATE Shlwapi Version)
File renamed without changes.

HMCL/HMCL.rc

Lines changed: 0 additions & 143 deletions
This file was deleted.

HMCL/HMCL.rc.in

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Microsoft Visual C++ generated resource script.
2+
//
3+
#include <sdkddkver.h>
4+
#include "windows.h"
5+
6+
#define IDC_MYICON 2
7+
#define IDD_HMCL_DIALOG 102
8+
#define IDS_APP_TITLE 103
9+
#define IDM_ABOUT 104
10+
#define IDI_HMCL 107
11+
#define IDC_HMCL 109
12+
#define IDR_MAINFRAME 128
13+
#define ID_SCRIPT_DOWNLOAD_JAVA 160
14+
#define IDC_STATIC -1
15+
16+
/////////////////////////////////////////////////////////////////////////////
17+
//
18+
// Icon
19+
//
20+
21+
// Icon with lowest ID value placed first to ensure application icon
22+
// remains consistent on all systems.
23+
IDI_HMCL ICON "HMCL.ico"
24+
25+
26+
/////////////////////////////////////////////////////////////////////////////
27+
//
28+
// Version
29+
//
30+
31+
VS_VERSION_INFO VERSIONINFO
32+
FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,@PROJECT_VERSION_TWEAK@
33+
PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,@PROJECT_VERSION_TWEAK@
34+
FILEFLAGSMASK 0x3fL
35+
FILEFLAGS 0x0L
36+
FILEOS 0x40004L
37+
FILETYPE 0x1L
38+
FILESUBTYPE 0x0L
39+
BEGIN
40+
BLOCK "StringFileInfo"
41+
BEGIN
42+
BLOCK "080404b0"
43+
BEGIN
44+
VALUE "CompanyName", "huanghongxun"
45+
VALUE "FileDescription", "Hello Minecraft! Launcher For Windows"
46+
VALUE "FileVersion", "@PROJECT_VERSION@"
47+
VALUE "InternalName", "HMCL.exe"
48+
VALUE "LegalCopyright", "Copyright (C) 2025 huangyuhui"
49+
VALUE "OriginalFilename", "HMCL.exe"
50+
VALUE "ProductName", "Hello Minecraft! Launcher"
51+
VALUE "ProductVersion", "@PROJECT_VERSION@"
52+
END
53+
END
54+
BLOCK "VarFileInfo"
55+
BEGIN
56+
VALUE "Translation", 0x804, 1200
57+
END
58+
END
59+
60+
61+
/////////////////////////////////////////////////////////////////////////////
62+
//
63+
// String Table
64+
//
65+
66+
STRINGTABLE
67+
BEGIN
68+
IDS_APP_TITLE "HMCL"
69+
IDC_HMCL "HMCL"
70+
END
71+
72+

0 commit comments

Comments
 (0)