реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Как прописать путь к файлу?, IAR AVR
rezident
сообщение Oct 17 2007, 10:23
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В корневых хидерах у меня находятся такие глобальные и немодифицируемые вещи как, например, типы переменных. А то, что как-то платформеннозависимо и/или подвергается модификации в проектах не должно находиться в корне. Например, если у вас определен адрес вызова глобальной функции, то в модифицируемых версиях извольте выкручиваться за счет каких-то дополнительных проверок внутри самой функции, а адрес вызова не трожьте! Как учил меня коллега, писавший операционки начиная с конца 80-х годов, в описании каждого модуля должен быть текстовый комментарий состояния его. Примерно что-то типа такого
1) не подлежит модификации,
2) модифицируемый только в исключительном случае,
3) утвержден для публикации,
4) подлежит утверждению,
5) в разработке,
6) альфа-версия.
И если проект ведет более, чем один программист, то данная концепция просто необходима. Система контроля версий это конечно хорошо, но согласованность при разработке в команде важнее.
P.S. конечно в проектах, которые выполняю единолично, я позволяю себе больше вольностей wink.gif
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 17 2007, 10:54
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Dog Pawlowa @ Oct 17 2007, 15:58) *
То ли я не умею готовить, но у меня вот эти две папки
|->_INC <-общие хидеры проектов
|->_SRC <-общие исходники проектов
не получаются статическими, они тоже изменяются. В реальной жизни то ошибка находится, то ли стремление улучшить проснется. 05.gif

Получается такая последовательность:
- общая часть ver 1
- проект A ver 1
- проект B ver 1
Произвели 100 устройств проекта A.
- корректировали общую часть ver 2
- корректировали проект 2
Произвели 100 устройств по проекту B.
Корректировали проект A ver 2.
Произвели 100 устройств проекта A
Пришла жалоба от клиента по ошибке в проекте A из первой партии.
Начинаем разбираться. Вернули версию проекта A на 1 - все правильно. Но результат компиляции другой, так как была изменена общая часть. Концов не осталось.

В общем, может это уже и не в топик данной темы, но все же отвечаю.
Чтобы такого как у вас не случалось, общие части, которые могут быть использованы в разных проектах должны в каждом проекте иметь свои локальные копии, находящиеся под контролем системы CVS (или подобной).
Именно система контроля версий и позволяет это сделать достаточно безболезненно, а вот если вы не пользуете систему контроля версий, тогда действительно синхронизировать общие исходники для разных проектов - тот еще гемор.
В этом случае будет примерно так:
- выпустили релиз проекта A ver 1 "А1" (с общей частью "common 1")
- выпустили релиз проекта В ver 1 "В1" (с общей частью "common 1")
"А1" и "В1" здесь надо воспринимать как тэги, однозначно идентифицирующие набор всех файлов проекта, как из common части, так и из файлов, относящихся исключительно к проекту.

Произвели 100 устройств проекта A, релиз "А1".

- корректировали общую часть на "common 2" в проекте В.
- выпустили релиз проекта В ver 2 "В2" (с общей частью "common 2")
Произвели 100 устройств по проекту B, релиз "В2".

- приступили к коррекции проекта "А", до кучи обновили common часть на "common 2".
- выпустили релиз проекта А ver 2 "А2" (с общей частью "common 2")
Произвели 100 устройств проекта A, релиз "А2".

Пришла жалоба от клиента по ошибке в проекте A с релизом "А1".
Начинаем разбираться. Извлекли версию проекта а по тэгу релиза "А1".
В локальной копии будут присутствовать исходники common версии "common 1".
Результат компиляции до байта совпадает. Конец найден, и виноватый тоже smile.gif




Цитата(rezident @ Oct 17 2007, 16:23) *
И если проект ведет более, чем один программист, то данная концепция просто необходима. Система контроля версий это конечно хорошо, но согласованность при разработке в команде важнее.
P.S. конечно в проектах, которые выполняю единолично, я позволяю себе больше вольностей wink.gif

Если проект ведет более чем один программист система контроля версий - суровая необходимость.
Иначе:
- Вася, ты менял исходник в таком то каталоге?
- Да, тебе кинуть?
- Конечно, еще месяц назад надо было.
- Да я же в отпуске был. Блин, сетевой каталог не открывается, давай флешку...


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 17 2007, 10:57
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Andy Mozzhevilov @ Oct 17 2007, 13:27) *
Конец найден, и виноватый тоже smile.gif

Ну, с виноватыми обычно проблем не бывает smile.gif
Признаюсь, инструкцию по SVN курил "не в затяжку", пользуюсь очевидными функциями. Про такую комбинацию не думал.
Мне кажется, что могут быть проблемы, если отмотать версию в такой локальной копии common назад и случайно закоммитить. Но нужно подумать и попробовать. Спасибо.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 17 2007, 11:04
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Dog Pawlowa @ Oct 17 2007, 16:57) *
Ну, с виноватыми обычно проблем не бывает smile.gif
Признаюсь, инструкцию по SVN курил "не в затяжку", пользуюсь очевидными функциями. Про такую комбинацию не думал.
Мне кажется, что могут быть проблемы, если отмотать версию в такой локальной копии common назад и случайно закоммитить. Но нужно подумать и попробовать. Спасибо.

Я пользуюсь на данный момент CVS, как оно реализуется в SVN не совсем представляю, поскольку доку по SVN меня несколько насильно заставили покурить некоторые присутвующие в том числе здесь товарищи smile.gif. И в данный момент она недокурена пока.
В CVS при извлечении по тэгу локальную версию закомитить будет нельзя, поскольку на ней будут так называемые липкие метки. Если нужно будет, допустим, выпустить релиз на основе именно этой комбинации исходников, ну типа исправить только тот небольшой баг, то тогда делается ветвь в проекте на основе текущей версии извлеченных исходных текстов и она уже комитится, но не мешает основному стволу разработки. При желании потом изменения можно внести на ствол.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 17 2007, 13:17
Сообщение #20


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Andy Mozzhevilov @ Oct 17 2007, 18:04) *
Я пользуюсь на данный момент CVS, как оно реализуется в SVN не совсем представляю, поскольку доку по SVN меня несколько насильно заставили покурить некоторые присутвующие в том числе здесь товарищи smile.gif. И в данный момент она недокурена пока.

Вот и плохо! smile.gif Но тебя раззи заставишь, если ты не хошь... biggrin.gif

Цитата(Andy Mozzhevilov @ Oct 17 2007, 18:04) *
В CVS при извлечении по тэгу локальную версию закомитить будет нельзя, поскольку на ней будут так называемые липкие метки. Если нужно будет, допустим, выпустить релиз на основе именно этой комбинации исходников, ну типа исправить только тот небольшой баг, то тогда делается ветвь в проекте на основе текущей версии извлеченных исходных текстов и она уже комитится, но не мешает основному стволу разработки. При желании потом изменения можно внести на ствол.

В Subversion принципиально это не отличается.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
fmdost
сообщение Oct 17 2007, 17:33
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Спасибо за такое количество ответов!

Цитата(Непомнящий Евгений @ Oct 17 2007, 08:05) *
Чтобы пути были относительно проекта, можно использовать $PROJ_DIR$, примерно так:
..\$PROJ_DIR$\ОбщиеФайлы\
Только что проверил, в #include "" работает и полный и относительный путь. Слэши не забыли проэкранировать?

Беру путь из заголовка в окошке. Что значит "Слэши проэкранировать?"
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Oct 18 2007, 04:26
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Т.Достоевский @ Oct 17 2007, 21:33) *
Беру путь из заголовка в окошке. Что значит "Слэши проэкранировать?"

#include "c:\\folder1\\folder2\\myFile.h"
#include "..\\..\\folder2\\myFile.h"
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 18 2007, 16:22
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Не нада екранироват smile.gif
Вот и пример из рабочего проекта
Код
#if IMPLEMENT_USART_LIB == 1
    #include ".\libs\Usart_2.c"
#endif

#if IMPLEMENT_SPP_LIB == 1
    #include ".\libs\SPP.c"
#endif

#if IMPLEMENT_EELOG_LIB == 1
    #include ".\libs\EElog.c"
#endif

#if  IMPLEMENT_DS1338_LIB == 1
    #include ".\libs\DS1338.c"
#endif

#if  IMPLEMENT_I2C_LIB == 1
    #include ".\libs\i2c.c"
#endif

#if  IMPLEMENT_I2C_SOFT_LIB == 1
    #include ".\libs\i2c_soft.c"
#endif

#if  IMPLEMENT_ADC_LIB == 1
    #include ".\libs\ADC_2.c"
#endif

#if  IMPLEMENT_I2CEEPROM_LIB == 1
    #include ".\libs\i2ceeprom.c"
#endif


А у меня ест вопрос. Возможно ли в сорс използовать переменньi окружения?
Не получается никак у меня.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 18 2007, 17:14
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Nikola Kirov @ Oct 18 2007, 19:22) *
А у меня ест вопрос. Возможно ли в сорс използовать переменньi окружения?

Нет, конечно, но их можно и нужно использовать для передачи параметров компилятору через командную строку. Какие проблемы?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 18 2007, 17:54
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Нет проблем. Хотелос написат что то типа

#include "$SOURCE_CODE_DIR$\ARM\ATMEL\i2c.c"

куда SOURCE_CODE_DIR переменная окружения. Но ето вообщем не работает в никаком компиляторе.
Но можно жит и без етого smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 18 2007, 22:23
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Nikola Kirov @ Oct 18 2007, 20:54) *
Хотелос написат что то типа
#include "$SOURCE_CODE_DIR$\ARM\ATMEL\i2c.c"

Компилятору в командную строчку что-то типа -I $SOURCE_CODE_DIR$
И все.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 18 2007, 22:31
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Да ето и ползуюс.
Но делаю из опции проекта -> C/C++ Compiler -> Preprocessor -> Additional include directories

ето включает их точно с -I.

но #include "$SOURCE_CODE_DIR$\ARM\ATMEL\i2c.c" нравится болше smile.gifsmile.gifsmile.gif Но уви....
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 19 2007, 02:23
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Nikola Kirov @ Oct 19 2007, 04:31) *
Да ето и ползуюс.
Но делаю из опции проекта -> C/C++ Compiler -> Preprocessor -> Additional include directories

ето включает их точно с -I.

но #include "$SOURCE_CODE_DIR$\ARM\ATMEL\i2c.c" нравится болше smile.gifsmile.gifsmile.gif Но уви....


Мне вот вообще больше нравится
#include "i2c.h"
безотносительно того, где оно там закопано, в каких папках проекта.
Поэтому опция -I в этом отношении рулит.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Oct 19 2007, 02:32
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Но если окажется что в прописаньих через -I пути ест 2 фаил с ето имя,будет използоватся первъи из них кто компилер нашел. Для маленких проект ето не проблем но когда проект становится болшой и вероятност таких проблем возрастает.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 19 2007, 02:54
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Nikola Kirov @ Oct 19 2007, 08:32) *
Но если окажется что в прописаньих через -I пути ест 2 фаил с ето имя,будет използоватся первъи из них кто компилер нашел. Для маленких проект ето не проблем но когда проект становится болшой и вероятност таких проблем возрастает.

Это уже проблема организации структуры проетка.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016