vadon 0 9 февраля, 2021 Опубликовано 9 февраля, 2021 · Жалоба Доброго времени суток. Есть некий код библиотеки, который состоит из 100500 папок и файлов с большим вложением. Как это все дело затянуть в проект IAR ? Ручками строить всю эту структуру файлов и папок напряжно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 9 февраля, 2021 Опубликовано 9 февраля, 2021 · Жалоба 28 минут назад, vadon сказал: Есть некий код библиотеки, который состоит из 100500 папок и файлов с большим вложением. Как это все дело затянуть в проект IAR ? Ручками строить всю эту структуру файлов и папок напряжно. А вы программку простенькую напишите, чтобы в ewp-файл проекта после MAIN.C дописала ваши файлы. Например, так: <file> <name>$PROJ_DIR$\MAIN.C</name> </file> <file> <name>$PROJ_DIR$\module1.c</name> </file> <file> <name>$PROJ_DIR$\module2.c</name> </file> ... <file> <name>$PROJ_DIR$\module1000.c</name> </file> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadon 0 9 февраля, 2021 Опубликовано 9 февраля, 2021 · Жалоба 2 hours ago, Xenia said: А вы программку простенькую напишите, чтобы в ewp-файл проекта после MAIN.C дописала ваши файлы. Например, так: <file> <name>$PROJ_DIR$\MAIN.C</name> </file> <file> <name>$PROJ_DIR$\module1.c</name> </file> <file> <name>$PROJ_DIR$\module2.c</name> </file> ... <file> <name>$PROJ_DIR$\module1000.c</name> </file> На до не просто дописать, а всю иерархию папок и файлов построить, получается надо написать свою программу которой которая будет ewp файлы генерировать? и почему ее нет dнутри IAR? LWIP и OC осилил, но есть либа в которой более 400 файлов, с глубиной вложения 4-5 папок, замахаться можно ( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 9 февраля, 2021 Опубликовано 9 февраля, 2021 · Жалоба 3 hours ago, vadon said: LWIP и OC осилил, но есть либа в которой более 400 файлов, с глубиной вложения 4-5 папок, замахаться можно ( Ловите скрипт на питоне. Добавляет в уже существующий проект IAR-а .ewp все сорсы из поддиректорий. import os import string import xml.etree.ElementTree as ET prog_file_name = "Project.ewp" proj_dir = os.getcwd() # Файл должен находится в корневой директории проекта def Populate_groups(root_path, el): n = 0 # Создаем группу grp = ET.SubElement(el, 'group') nm = ET.SubElement(grp, 'name') nm.text = os.path.basename(root_path) it = os.scandir(root_path) for entry in it: if not entry.name.startswith('.') and entry.is_dir(): deeper_path = os.path.join(root_path,entry.name) print ('Group: ' + deeper_path) n = n + Populate_groups(deeper_path, grp) it = os.scandir(root_path) for entry in it: if not entry.name.startswith('.') and entry.is_file(): fname = os.path.join(root_path,entry.name) if fname.endswith('.c') or fname.endswith('.cpp') or fname.endswith('.s') or fname.endswith('.S') : p = fname.replace(proj_dir,"$PROJ_DIR$") fl = ET.SubElement(grp, 'file') nm = ET.SubElement(fl, 'name') nm.text = p n = n + 1 print ('File: ' + p) if n==0: el.remove(grp) #print (n) return n full_proj_name = proj_dir + "\\" + prog_file_name # Открываем файл проекта # Можно открыть так file = open("D:\embedded\Project.ewp",'r') tree = ET.parse(full_proj_name) root = tree.getroot() confs = root.findall('configuration') for conf in confs: for sett in conf.iter('settings'): name = sett.find('name') if name.text == 'ICCARM': set_data = sett.find('data') #print (name.text) #ET.dump(set_data) break # Преобразуем список подключаемых путей так чтобы в него попали все поддиректории корня проекта # Ищем тэг с перечислением подключаемых путей data_option_include = None for option in set_data.iter('option'): opt_name = option.find('name') #ET.dump(opt_name) if opt_name.text == 'CCIncludePath2': #ET.dump(option) data_option_include = option break if data_option_include is not None: #for include in data_option_include.iter('state'): #print (include.text) set_data.remove(data_option_include) # Восстанавливаем тэг option с перечислением путей new_opt = ET.SubElement(set_data, 'option') new_name = ET.SubElement(new_opt, 'name') new_name.text = 'CCIncludePath2' # Проходим по всем директориям проекта и включаем их в список # Если включать только директории содержащие .h файлы то при компиляции проекта IAR IDE не находит некоторых директорй после такого преобразования for dirpath, dirs, files in os.walk(proj_dir): p = dirpath.replace(proj_dir, "$PROJ_DIR$") new_incl = ET.SubElement(new_opt, 'state') new_incl.text = p print('Include: ' + p) # Удаляем список файлов и формируем новый с распределением по группам аналогичным распределению по директориям groups = root.findall('group') for group in groups: #ET.dump(group) root.remove(group) Populate_groups(proj_dir , root) print ("END!") tree.write(full_proj_name, xml_declaration=True, encoding="UTF-8") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadon 0 10 февраля, 2021 Опубликовано 10 февраля, 2021 · Жалоба О это уже близко, не силен в питоне, но попытаюсь разобраться. Но что то не работает скрипт Как тестировал, создал такую структуру, папка IAR c проектом в ней такая структура P1 INCLUDE test_p1.h test.p1.c P2 INCLUDE test_p2.h test_p2.c main.c запустил скрипт, предварительно вписав имя проекта в prog_file_name = "test_p.ewp" скрипт выдал какието ошибки (((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 10 февраля, 2021 Опубликовано 10 февраля, 2021 · Жалоба 3 hours ago, vadon said: Но что то не работает скрипт скрипт выдал какието ошибки (((( У меня использован был питон версии 3.7.1 в варианте 64-е бита У вас похоже что-то не так с импортируемым модулем "os". В питоне с версиями нужно быть аккуратным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadon 0 10 февраля, 2021 Опубликовано 10 февраля, 2021 · Жалоба 12 minutes ago, AlexandrY said: У меня использован был питон версии 3.7.1 в варианте 64-е бита У вас похоже что-то не так с импортируемым модулем "os". В питоне с версиями нужно быть аккуратным. 3.7.1 у меня не ставится на win7 ( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 10 февраля, 2021 Опубликовано 10 февраля, 2021 · Жалоба За время этих установок и плясок с бубном вокруг всяких питонов, уже несколько раз можно было написать простой батник и забыть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 10 февраля, 2021 Опубликовано 10 февраля, 2021 · Жалоба 09.02.2021 в 21:27, vadon сказал: есть либа в которой более 400 файлов, с глубиной вложения 4-5 папок, замахаться можно ( Неужели там так много папок? Долго там только в ручную папки делать в проекте, т.к. ИАР не предлагает брать папки с дерева каталогов, только вводить вручную. Ну а файлы добавлять двумя кликами: выбрал фильтр на *.c *.cpp и все файлы в папке добавил. Все хидеры ИАР сам цепляет. Думаю, за это время уже бы все добавили :)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться