feat(build): 引入新的 Python 构建系统并移除旧 Makefile
新增基于 Python 的构建脚本 `cbuild.py`,支持包管理、依赖解析和模块化编译。 同时添加 `.gitignore` 忽略 `build` 目录,并在 `justfile` 中更新构建命令。 移除了原有的 `lib/Makefile` 和主目录下的相关 make 规则,统一使用新构建系统。
This commit is contained in:
48
wc.py
Normal file
48
wc.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""统计目录下C/C++文件的行数(write by AI)"""
|
||||
import os
|
||||
|
||||
def count_lines(file_path):
|
||||
"""统计单个文件的代码行数"""
|
||||
try:
|
||||
with open(file_path, 'rb') as f: # 二进制模式读取避免编码问题
|
||||
return sum(1 for _ in f)
|
||||
except UnicodeDecodeError:
|
||||
print(f"警告:无法解码文件 {file_path}(可能不是文本文件)")
|
||||
return 0
|
||||
except Exception as e:
|
||||
print(f"读取 {file_path} 出错: {str(e)}")
|
||||
return 0
|
||||
|
||||
def scan_files(directory, exclude_dirs=None):
|
||||
"""扫描目录获取所有C/C++文件"""
|
||||
if exclude_dirs is None:
|
||||
exclude_dirs = ['.git', 'venv', '__pycache__'] # 默认排除的目录
|
||||
|
||||
c_files = []
|
||||
for root, dirs, files in os.walk(directory):
|
||||
# 跳过排除目录
|
||||
dirs[:] = [d for d in dirs if d not in exclude_dirs]
|
||||
|
||||
for file in files:
|
||||
if file.endswith(('.c', '.h')):
|
||||
full_path = os.path.join(root, file)
|
||||
c_files.append(full_path)
|
||||
return c_files
|
||||
|
||||
def main():
|
||||
"""main function"""
|
||||
target_dir = input("请输入要扫描的目录路径(留空为当前目录): ") or '.'
|
||||
|
||||
files = scan_files(target_dir)
|
||||
total_lines = 0
|
||||
|
||||
print("\n统计结果:")
|
||||
for idx, file in enumerate(files, 1):
|
||||
lines = count_lines(file)
|
||||
total_lines += lines
|
||||
print(f"{idx:4d}. {file} ({lines} 行)")
|
||||
|
||||
print(f"\n总计: {len(files)} 个C/C++文件,共 {total_lines} 行代码")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user