дата линковки
От: Аноним  
Дата: 25.07.07 08:13
Оценка:
Привет всем!


есть консольное приложение кроссплатформенное Solaris, Linux, Windows
надо при выполнении файла узнать дату линковки


из командной строки:
<exe-file> version [enter]

last linking date is :...
и видим дату сборки


есть __DATA__ (MSDN) The compilation date of the current source file. The date is a string literal of the form Mmm dd yyyy. The month name Mmm is the same as for dates generated by the library function asctime declared in TIME.H.

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

а если проект состоит из нескольких файлов и изменения вносятся в один из них


Помогите чем можете!

С уважением, Павел.
Re: дата линковки
От: ak_miass Россия  
Дата: 25.07.07 08:43
Оценка:
Ну может быть такой изврат прокатит
В Pre-built steps запускать утилитку, которая создаёт файл my_date.h:
#define MY_DATE "тут текущая дата"

И там где необходимо вывести дату этот файл инклудить
Re: дата линковки
От: Programador  
Дата: 25.07.07 12:00
Оценка:
Здравствуйте, Аноним,

Есть еще

__TIMESTAMP__ — The date and time of the last modification of the current source file, expressed as a string literal in the form Ddd Mmm Date hh:mm:ss yyyy, where Ddd is the abbreviated day of the week and Date is an integer from 1 to 31.

Re[2]: дата линковки
От: Аноним  
Дата: 25.07.07 12:40
Оценка:
Здравствуйте, Programador, Вы писали:

P>Здравствуйте, Аноним,


P>Есть еще

P>__TIMESTAMP__ — The date and time of the last modification of the current source file, expressed as a string literal in the form Ddd Mmm Date hh:mm:ss yyyy, where Ddd is the abbreviated day of the week and Date is an integer from 1 to 31.


но ведь это то же самое что и __DATA__ ...current source file... а я этот файл не менял! изменеиня коснулись другого файла прроекта !!!
Re[3]: дата линковки
От: Programador  
Дата: 25.07.07 12:50
Оценка:
Здравствуйте, Аноним, Вы писали:


А>но ведь это то же самое что и __DATA__ ...current source file... а я этот файл не менял! изменеиня коснулись другого файла прроекта !!!

Нет __DATE__ — The compilation date of the current source file. А __TIMESTAMP__ — modification
нуи можно их ссылками связать вместе с __FILE__, правда есть инклюдника
Re: дата линковки
От: Vain Россия google.ru
Дата: 25.07.07 15:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем!



А>есть консольное приложение кроссплатформенное Solaris, Linux, Windows

А>надо при выполнении файла узнать дату линковки

Ты можешь заменить дату линковки на дату компиляции если они примерно совпадают, так?
Ну и заменяй, прилинковывай либу из проекта, на которого ссылается твой проект. Либа будет состоять из одного cpp, в котором будет, к примеру
#pragma comment(user,"<LinkParams id=\"" __COUNTER__ "\"><Date>" __DATE__ "</Date><Time>" __TIME__ "</Time></LinkParams>")

Далее, находишь этот текст в своём екзешнике и вперёд. Во всяком случае время линковки будет не намного позже компиляции того cpp из этой спецлибы. Единственно, что тебе надо обеспечить, это чтобы компиляция проекта либы была сразу перед твоим проектом и выполнялась всегда, вне зависимости от установленных параметров проека IncrementalLink/Minimal Rebuild и т.д. Можно, к примеру, для начала, заменить в проекте cpp на bat файл и для него сделать custom build на cpp файл тогда он будет запускаться "всегда" перед компиляцией твоего проекта, ну или просто отключить нужные параметры проекта либы, чтобы не "мешали".
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: дата линковки
От: Programador  
Дата: 25.07.07 16:27
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, Аноним, Вы писали:


А>>Привет всем!



А>>есть консольное приложение кроссплатформенное Solaris, Linux, Windows

А>>надо при выполнении файла узнать дату линковки

V>Ты можешь заменить дату линковки на дату компиляции если они примерно совпадают, так?

так это просто время создания екзешника. Только какой с него прок?
Re[3]: дата линковки
От: Vain Россия google.ru
Дата: 25.07.07 16:30
Оценка:
Здравствуйте, Programador, Вы писали:

V>>Ты можешь заменить дату линковки на дату компиляции если они примерно совпадают, так?

P>так это просто время создания екзешника. Только какой с него прок?
Время и дата, это не ко мне вопрос
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: дата линковки
От: Vain Россия google.ru
Дата: 26.07.07 04:27
Оценка:
Здравствуйте, Vain, Вы писали:

V>Можно, к примеру, для начала, заменить в проекте cpp на bat файл и для него сделать custom build на cpp файл тогда он будет запускаться "всегда" перед компиляцией твоего проекта, ну или просто отключить нужные параметры проекта либы, чтобы не "мешали".

Думаю надёжнее будет за место pragma comment(user,...) внутри cpp файла проекта либы вставить это:
extern "C" const char g_szLinkageParams[] = "...";

Идея в том, чтобы линкер не выкинул строку, и чтобы либа всегда компилилась и линковалась заново. В Additional Dependencies твоего проекта подключаешь не либу, а её объектник, а в пост билде твоего проека удаляешь этот obj файл.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: дата линковки
От: Аноним  
Дата: 26.07.07 13:04
Оценка:
Здравствуйте, Programador, Вы писали:

P>Здравствуйте, Аноним, Вы писали:



А>>но ведь это то же самое что и __DATA__ ...current source file... а я этот файл не менял! изменеиня коснулись другого файла прроекта !!!

P>Нет __DATE__ — The compilation date of the current source file. А __TIMESTAMP__ — modification
P>нуи можно их ссылками связать вместе с __FILE__, правда есть инклюдника

Прошу прощения описка конечно же __DATE__

Да так и сделаю!

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.