Перейти к содержанию
    

Сделать сделать константу "время копиляции" в программе?

задача такая, при компиляции нужно прописывать

время компиляции в какую то константу или переменную для программы,

которую предполается заливать в контроллер.

есть __TIME__ и __DATA_

но если их вставить в файл *.c

этот файл будет компилироваться,только если удален готовый объектник или

если там сделаны изменнения по сравнению с временем объектника

как это можно сделать "красивше"?

чтобы каждый раз это не делать руками

может криво выразился..

но хотелось бы иметь какую то константу, которая будет различная

при каждой компиляции программы.

как это можно сделать в IAR ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но если их вставить в файл *.c

этот файл будет компилироваться,только если удален готовый объектник или

если там сделаны изменнения по сравнению с временем объектника

как это можно сделать "красивше"?

Вынести в отдельный файл, объектник удалять автоматически до или после сборки. Но лучше внешнюю утилиту написать/приспособить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вынести в отдельный файл, объектник удалять автоматически до или после сборки. Но лучше внешнюю утилиту написать/приспособить.

ну я как бы так и сделал

но не хочу руками это удалять

есть может какая нибудь #pragma для этого?

чтобы всегда компилировалось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чтобы всегда компилировалось?

Самая волшебная таблетка "Ребилдол"? Не? (Rebuild All)

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . . но не хочу руками это удалять

в опциях проекта есть поля pre-build

пропишите там командынй файл или сразу старт своей утилиты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вынести в отдельный файл, объектник удалять автоматически до или после сборки. Но лучше внешнюю утилиту написать/приспособить.

Это на мой взгляд самое эффективное решение (по крайней мере для IAR моей версии),

тк когда я делел исслледования на эту тему, решения в рамках IDE IAR не нашел.

Выкрутился тем, что такой финт можно сдеать с помощью SVN, но суть не меняется - сторонняя к IAR программа

прописывает "в нужное время, в нужном месте" свои данные (а именно номер ревизии).

-------

Написать свою утилиту, которая генерит исходник в виде модуля, куда пишется дата, время,

и "всечтонадо" в виде констант (например, контрольные суммы модулей).

Может есть более оптимальные решения ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и, конечно, самый православный способ - сделать Makefile, там всё это можно оформить на птичьем языке программы make. Все эти богомерзкие IDE - от лукавого :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и, конечно, самый православный способ - сделать Makefile, там всё это можно оформить на птичьем языке программы make.

Православно, но своей утилитой может быть на деле удобнее. Я так прописываю время и номер сборки, длину бинарника и CRC сразу.

 

Все эти богомерзкие IDE - от лукавого :laughing:

Истинно так!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и, конечно, самый православный способ - сделать Makefile, там всё это можно оформить на птичьем языке программы make. Все эти богомерзкие IDE - от лукавого :laughing:

А как это осваивается (с нуля), в смысле, "для интеллектуалов" :)

Есть ли в этом смысл для тех, кого на 99.9 устраивает фунциональность IDE ? (вроде меня)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите здесь http://microsin.ru/content/view/1141/44/

 

 

спасибо за ответы

сделал немного проще (вместо написания утилиты на бейсике)

в окне Build Action

Prebuild command line добавил

строчку touch $PROJ_DIR$\..\utils\userfunc.h

 

то есть при компиляции меняется время последнего доступа к файлу,

где определана версия

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . .в окне Build Action

Prebuild command line добавил

строчку touch $PROJ_DIR$\..\utils\userfunc.h

. . .

Смотря какого размера проект (кол-во модулей) и куда включен этот h-файл.

Если он (вдруг) глобальный и модулей много - будет пустопорожняя перекомпиляция "всего".

Лучше уж модуль .c "тачить".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...