Я использовал другой подход - вместо того, чтобы компилировать все в .lib
, а затем связать это .lib
с исполняемым файлом, я связываю исполняемый файл напрямую с файлами .obj
.
В CMake, это можно сделать следующим образом:
add_library(common OBJECT ${common_sources})
add_executable(executable1 "main1.cc" $<TARGET_OBJECTS:common>
add_executable(executable2 "main2.cc" $<TARGET_OBJECTS:common>
Изменение любого из файлов в ${common_sources})
только перекомпилирует их эквивалентные объекты и перехватывает исполняемые файлы, что обеспечивает те же преимущества, что и если вы связали вещи через промежуточный .lib
. В то же время все статические конструкторы остаются на месте, что устраняет проблему.
Обратите внимание, что это полезно, только если вы ставите статические ссылки.
Этот подход был протестирован с помощью gcc 5.2.0, MinGW-w64 5.2.0 и MSVC 15.
В этом случае просто необходимо разделиться.
days = num_seconds / (60 * 60 * 24);
num_seconds -= days * (60 * 60 * 24);
hours = num_seconds / (60 * 60);
num_seconds -= hours * (60 * 60);
minutes = num_seconds / 60;
Для более сложных вычислений даты, таких как количество дней в течение этих десяти миллионов секунд после 15:00 19-го января в 1983, Вы использовали бы класс NSCalendar наряду с NSDateComponents. Руководство по программированию даты и времени Apple помогает Вам здесь.