Все, что вы пишете, правильно и работает как следует:
Когда вы используете систему сборки, файл компилируется только после того, как он был изменен, то есть он новее, чем соответствующий объектный файл. Таким образом, вы всегда получите дату, когда этот конкретный файл был скомпилирован.
Чтобы получать новую дату сборки каждый раз, когда изменяется любой файл приложения / библиотеки, необходимо убедиться, что файл, в котором хранится дата сборки, также создается каждый раз.
Обычно система сборки поддерживает что-то в этом роде, опцию типа «всегда строить». Другой (не рекомендуемый) способ - удалять объектный файл каждый раз перед сборкой. Или (что еще хуже) всегда делайте чистую сборку, т.е. удаляйте все и собирайте все каждый раз.