now = get_now_time()
time = get_last_upd_time()
if (now > time)
set (LAST_UPD_TIME time CACHE INTERNAL "Defines last update time of the file" FORCE)
# run bash command here
endif (now > time)
get_now_time
и get_last_upd_time
- вымышленные функции, возвращающие временные метки (я думаю, вы можете использовать команды bash для получения этих временных меток).Затем вы можете сравнить их и сохранить метку времени последнего изменения в кеше.
Однако это решение выглядит для меня безобразно, так как я знаю, правильно ли вы определите цели и зависимости между ними.только измененные файлы, не так ли?Не могли бы вы показать мне определения целей?
edit
Вы можете использовать следующий файл CMakeLists.txt (хотя я не уверен, что он основан на моем проекте):
# add main target, the executable file
ADD_EXECUTABLE(gitbrowser main.cpp view.cpp content.hpp gitbrowser.cpp)
# linking it with necessary libraries
TARGET_LINK_LIBRARIES(gitbrowser "cppcms config++ boost_filesystem-mt")
# add page.cpp target
ADD_CUSTOM_COMMAND(
OUTPUT page.cpp
COMMAND "cppcms_tmpl_cc page.tmpl -o view.cpp"
DEPENDS page.tmpl content.hpp
)
# and finally add dependency of the main target
ADD_DEPENDENCIES(gitbrowser page.cpp)
Удачи