Да. У вас должна быть система сборки, которая позволит вам запускать события сборки, если какой-то предикат верен. Что вам нужно, так это предикат, который говорит: «Этот файл изменился семантически интересным способом».
Существует хорошее приближение такого предиката в форме нашего SmartDifferencers семейства инструментов, которые сравнивают файлы исходного кода, используя глубокие знания (например, производственный анализатор) структуры исходного кода. , В частности, SmartDifferencer будет показывать изменения в исходном коде с точки зрения изменений в языковых конструкциях (например, идентификаторах, операторах, объявлениях, блоках) и возможных действиях редактирования (вставка, замена, удаление, перемещение, переименование, переименование блока и т. Д. .). Он не заинтересован в макете или комментариях (если вы не заставляете это быть). Таким образом, довольно легко заставить SmartDifferencer сказать, изменился ли файл исходного кода что-то кроме комментариев или пробелов. SmartDifferencers существуют для широкого спектра языков.
Теперь, как заставить систему сборки сотрудничать? Unix делает триггеры для предиката, но не такого рода; что он на самом деле делает, так это запускает события построения на объектах, основываясь на дате появления файлов по сравнению с целью. Вы можете подделать это, имея зависимость от файла «change_signal», создав такой файл, если SmartDifferencer видит интересную разницу.