mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-05-10 10:19:47 +08:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ec22eaae0 | |||
| c92d20b4b3 | |||
| 6a22202ce5 | |||
| db01c1ad53 | |||
| 1681473357 | |||
| 50f9f95ad5 | |||
| 6ccdc696d2 | |||
| 1219a53391 |
@@ -0,0 +1,75 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
project(PathEditor VERSION 3.0 LANGUAGES C)
|
||||||
|
|
||||||
|
# 启用资源编译器以处理 .rc 文件
|
||||||
|
enable_language(RC)
|
||||||
|
|
||||||
|
# 设置 C 标准
|
||||||
|
set(CMAKE_C_STANDARD 17)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_C_EXTENSIONS OFF) # 禁用特定编译器的扩展(如 gnu17),强制使用标准 C17
|
||||||
|
|
||||||
|
# 定义源文件
|
||||||
|
set(SOURCES
|
||||||
|
src/main.c
|
||||||
|
src/utils.c
|
||||||
|
src/registry.c
|
||||||
|
src/ui.c
|
||||||
|
src/globals.c
|
||||||
|
src/ui_utils.c
|
||||||
|
src/cb_edit.c
|
||||||
|
src/cb_file.c
|
||||||
|
src/cb_main.c
|
||||||
|
ico/resources.rc
|
||||||
|
)
|
||||||
|
|
||||||
|
# 创建 GUI 可执行文件(WIN32 属性会自动添加 -mwindows 参数)
|
||||||
|
add_executable(${PROJECT_NAME} WIN32 ${SOURCES})
|
||||||
|
|
||||||
|
# 添加宏定义
|
||||||
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||||
|
_WIN32
|
||||||
|
UNICODE
|
||||||
|
_UNICODE
|
||||||
|
)
|
||||||
|
|
||||||
|
# 添加编译选项
|
||||||
|
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||||
|
-Wall
|
||||||
|
-O2
|
||||||
|
-fexec-charset=UTF-8
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# 设置头文件搜索路径
|
||||||
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/include
|
||||||
|
${CMAKE_SOURCE_DIR}/libs/IUP/include
|
||||||
|
)
|
||||||
|
|
||||||
|
# 设置库文件搜索路径
|
||||||
|
target_link_directories(${PROJECT_NAME} PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/libs/IUP
|
||||||
|
)
|
||||||
|
|
||||||
|
# 链接所需库
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||||
|
iup
|
||||||
|
iupcd
|
||||||
|
gdi32
|
||||||
|
comdlg32
|
||||||
|
comctl32
|
||||||
|
uuid
|
||||||
|
ole32
|
||||||
|
advapi32
|
||||||
|
)
|
||||||
|
|
||||||
|
# 编译完成后,仅将程序实际需要的核心 DLL 文件复制到构建输出目录
|
||||||
|
set(IUP_REQUIRED_DLLS "${CMAKE_CURRENT_SOURCE_DIR}/libs/IUP/iup.dll")
|
||||||
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
${IUP_REQUIRED_DLLS}
|
||||||
|
"$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
||||||
|
COMMENT "Copying required DLLs to build directory..."
|
||||||
|
)
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
CC = gcc
|
|
||||||
WINDRES = windres
|
|
||||||
|
|
||||||
# Paths - specific to user environment
|
|
||||||
IUP_DIR = libs/iup-3.31_Win64_dllw6_lib
|
|
||||||
INCLUDE_DIR = $(IUP_DIR)/include
|
|
||||||
LIB_DIR = $(IUP_DIR)
|
|
||||||
LOCAL_INCLUDE_DIR = include
|
|
||||||
|
|
||||||
# Output Directories
|
|
||||||
OBJ_DIR = obj
|
|
||||||
BIN_DIR = bin
|
|
||||||
|
|
||||||
# Flags
|
|
||||||
# -mwindows: Create GUI app (no console)
|
|
||||||
# -DUNICODE -D_UNICODE: Use Wide Character API
|
|
||||||
CFLAGS = -Wall -O2 -I$(INCLUDE_DIR) -I$(LOCAL_INCLUDE_DIR) -D_WIN32 -DUNICODE -D_UNICODE -fexec-charset=UTF-8
|
|
||||||
LDFLAGS = -L$(LIB_DIR) -liup -liupcd -lgdi32 -lcomdlg32 -lcomctl32 -luuid -lole32 -ladvapi32 -mwindows
|
|
||||||
|
|
||||||
# Source
|
|
||||||
SRC = src/main.c src/utils.c src/registry.c src/ui.c src/ui_utils.c src/cb_edit.c src/cb_file.c src/cb_main.c src/globals.c
|
|
||||||
RES = ico/resources.rc
|
|
||||||
OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/ui.o $(OBJ_DIR)/ui_utils.o $(OBJ_DIR)/cb_edit.o $(OBJ_DIR)/cb_file.o $(OBJ_DIR)/cb_main.o $(OBJ_DIR)/globals.o $(OBJ_DIR)/resources.o
|
|
||||||
EXE = $(BIN_DIR)/PathEditor.exe
|
|
||||||
|
|
||||||
all: $(BIN_DIR) $(OBJ_DIR) $(EXE)
|
|
||||||
|
|
||||||
$(BIN_DIR):
|
|
||||||
if not exist $(BIN_DIR) mkdir $(BIN_DIR)
|
|
||||||
|
|
||||||
$(OBJ_DIR):
|
|
||||||
if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
|
|
||||||
|
|
||||||
$(EXE): $(OBJ)
|
|
||||||
$(CC) -o $@ $^ $(LDFLAGS)
|
|
||||||
|
|
||||||
$(OBJ_DIR)/main.o: src/main.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/utils.o: src/utils.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/registry.o: src/registry.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/ui.o: src/ui.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/ui_utils.o: src/ui_utils.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/cb_edit.o: src/cb_edit.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/cb_file.o: src/cb_file.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/cb_main.o: src/cb_main.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/globals.o: src/globals.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(OBJ_DIR)/resources.o: ico/resources.rc
|
|
||||||
$(WINDRES) -i $< -o $@
|
|
||||||
|
|
||||||
clean:
|
|
||||||
if exist $(OBJ_DIR)\*.o del /Q $(OBJ_DIR)\*.o
|
|
||||||
if exist $(BIN_DIR)\*.exe del /Q $(BIN_DIR)\*.exe
|
|
||||||
@@ -61,12 +61,14 @@
|
|||||||
|
|
||||||
* Windows 操作系统
|
* Windows 操作系统
|
||||||
* GCC 编译器 (推荐 MinGW-w64)
|
* GCC 编译器 (推荐 MinGW-w64)
|
||||||
* Make 工具
|
* CMake 工具
|
||||||
* IUP 库 (已包含在 `libs` 目录下)
|
* IUP 库 (已包含在 `libs` 目录下)
|
||||||
* Inno Setup 6 (仅打包需要)
|
* Inno Setup 6 (仅打包需要)
|
||||||
|
|
||||||
### 编译步骤
|
### 编译步骤
|
||||||
|
|
||||||
|
本项目使用 CMake 构建系统,支持生成更标准的构建文件并集成到各大 IDE。
|
||||||
|
|
||||||
1. 克隆仓库:
|
1. 克隆仓库:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -74,14 +76,18 @@
|
|||||||
cd PathEditor
|
cd PathEditor
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 编译项目:
|
2. 使用 CMake 配置和编译:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mingw32-make
|
# 生成构建系统 (以 MinGW 为例)
|
||||||
|
cmake -B build -G "MinGW Makefiles"
|
||||||
|
|
||||||
|
# 编译项目
|
||||||
|
cmake --build build
|
||||||
```
|
```
|
||||||
|
|
||||||
3. 运行:
|
3. 运行:
|
||||||
编译成功后,可执行文件位于 `bin/PathEditor.exe`。
|
编译成功后,可执行文件位于 `build/PathEditor.exe`。
|
||||||
|
|
||||||
### 打包 (可选)
|
### 打包 (可选)
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,4 @@
|
|||||||
@echo off
|
@echo off
|
||||||
echo Copying DLLs...
|
|
||||||
if not exist bin mkdir bin
|
|
||||||
copy /Y "libs\iup-3.31_Win64_dllw6_lib\*.dll" bin\
|
|
||||||
|
|
||||||
echo Building Installer...
|
echo Building Installer...
|
||||||
"D:\Program Files (x86)\Inno Setup 6\ISCC.exe" "dist\installer.iss"
|
"D:\Program Files (x86)\Inno Setup 6\ISCC.exe" "dist\installer.iss"
|
||||||
|
|||||||
Vendored
+2
-2
@@ -37,8 +37,8 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
|
|||||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||||
|
|
||||||
[Files]
|
[Files]
|
||||||
Source: "d:\Code\doing_exercises\programs\PathEditor\bin\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "d:\Code\doing_exercises\programs\PathEditor\build\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "d:\Code\doing_exercises\programs\PathEditor\bin\*.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "d:\Code\doing_exercises\programs\PathEditor\build\*.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5
-3
@@ -8,9 +8,11 @@
|
|||||||
#include "cb_main.h"
|
#include "cb_main.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
编译命令:
|
!编译命令:
|
||||||
Remove-Item -Path "obj\*.o" -Force -ErrorAction SilentlyContinue && mingw32-make
|
cmake -B build -G "MinGW Makefiles"
|
||||||
打包命令:
|
cmake --build build
|
||||||
|
|
||||||
|
!打包命令:
|
||||||
build_installer.bat
|
build_installer.bat
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user