一、将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
二、python程序
python
import os
from pathlib import Path
import shutil
# 获取当前文件夹
current_directory = Path.cwd()
# 目标文件夹
target_root = Path(r"C:\***\esp32practise\01_led\components\BSP")
target_root_main = Path(r"C:\***\esp32practise\01_led\main")
# 获取当前文件夹下所有有效文件夹,并取出components的文件夹的集合
foler_3_name_set = set()
for folder_1 in current_directory.iterdir():
# 过滤非文件夹和系统文件夹
if not folder_1.is_dir() or folder_1.name.startswith('.'):
continue
folder_components = folder_1/'components'/'BSP'
folder_main = folder_1/'main'
if not folder_components.is_dir():
continue
for foler_3 in folder_components.iterdir():
if not foler_3.is_dir():
continue
foler_3_name_set.add(foler_3.name)
dest = target_root / foler_3.name
# shutil.copytree(foler_3,dest,dirs_exist_ok=True)
# 获取当前文件夹下main的文件夹下的main.c文件,并更名为main_components模块名.c
for file_main in folder_main.iterdir():
if file_main.name == 'main.c':
file_new_name = 'main_'+foler_3.name+'.c'
dest_file = target_root_main/file_new_name
shutil.copy2(file_main,dest_file)
print('main_'+foler_3.name+'.c')
# 重新生成CMakelist.txt文件
CMakelist_file = target_root/'CMakeLists_1.txt'
with open(CMakelist_file,'w',encoding='utf-8') as file:
add_str = ''
for src_dirs in foler_3_name_set:
add_str += (' '+src_dirs+'\n')
file.write("set(src_dirs\n")
file.write(add_str)
file.write(')\n')
file.write("set(include_dirs\n")
file.write(add_str)
file.write(')\n')
file.write('set(requires\n driver)\n')
file.write('idf_component_register(SRC_DIRS ${src_dirs} INCLUDE_DIRS ${include_dirs} REQUIRES ${requires})\n')
file.write('component_compile_options(-ffast-math -O3 -Wno-error=format=-Wno-format)\n')
print('out:',src_dirs)