# ==========================================
# 1. 通用 C++ / 编译器产物
# ==========================================
*.d
*.o
*.obj
*.slo
*.lo
*.gch
*.pch
*.so
*.dylib
*.dll
*.lai
*.la
*.a
*.lib
*.exe
*.out
*.app
*.mod
*.smod
*.pdb
*.orig
*.dmp

# ==========================================
# 2. Qt / qmake 构建产物
# ==========================================
# 忽略所有生成的 Makefile 和 qmake 缓存
Makefile*
*.qmake.stash
*.pro.user*
*.qtvscr

# 忽略生成的代码文件
GeneratedFiles/

# 忽略典型的构建目录（Qt Creator 默认格式）
build-*/

# Qt Creator Clangd 缓存目录
.qtc_clangd/

# ==========================================
# 3. IDE 临时文件 (VS / VS Code)
# ==========================================
.vs/
ipch/
*.sln
*.suo
*.sdf
*.opensdf
.vscode/c_cpp_properties.json

# 忽略所有用户特定配置
*.user
*.user.*

# 忽略所有日志文件
*.log

# 忽略 Visual Studio 自动生成的工程文件
*.vcxproj
*.vcxproj.*
*.filters

# ==========================================
# 4. 项目特定目录 (Bin & Src)
# ==========================================
# 忽略整个 Bin 目录下的大部分内容，保留特定结构
Bin/Debug*/
Bin/Release/
Bin/Temp/
Bin/TestOfWTAI/
Bin/UserConfig/*.dmp
Bin-versions/
nmWTAI_bin*/

# 针对 Src4 目录的深度清理
Src4/**/debug/
Src4/**/release/
Src4/**/Win32/
Src4/.vs/
Src4/ipch/
Src4/build/
Src4/vtk - opengl2.pri

# ==========================================
# 5. nmNum 子项目特殊处理 (保留 .pro 文件)
# ==========================================
# 忽略这些子目录的所有内容
Src4/nmNum/nmData/*
Src4/nmNum/nmPlot/*
Src4/nmNum/nmSubWnd/*
Src4/nmNum/nmSubWxs/*
Src4/nmNum/nmXml/*

# 但通过 "!" 符号重新包含关键的工程文件
!Src4/nmNum/nmData/*.pro
!Src4/nmNum/nmPlot/*.pro
!Src4/nmNum/nmSubWnd/*.pro
!Src4/nmNum/nmSubWxs/*.pro
!Src4/nmNum/nmXml/*.pro

# ==========================================
# 6. 特殊例外：允放行 3rd 目录下的第三方依赖库
# ==========================================
!3rd/JSON/**
!3rd/meshgen/**
!3rd/Pebi/**
!3rd/SinglePhaseSolver/**
!3rd/VTK7.1/**

ML/nmWTAI-ML/.idea
ML/nmWTAI-ML/.venv
ML/nmWTAI-ML/.vscode
ML/nmWTAI-ML/data/samples
ML/nmWTAI-ML/data/temp
ML/nmWTAI-ML/results
__pycache__
ML/Training/Debug
ML/Training/Release
ML/nmWTAI-ML/models/**/*.json
*.pptx
*.pdf