При использовании системы сборки autoconf / automake, если флаги компилятора или другие переменные в Makefile.am (или даже на более высоком уровне, например configure.ac) изменяются, исходные файлы C ++, связанные с этим Makefile, не будут автоматически перестраиваться.Это становится особенно важным, так как мы используем automake как часть системы непрерывной сборки, которая перекомпилируется только при необходимости.
Я думал включить Makefile в качестве зависимости для файлов .o, что теоретически решит вышеуказанную проблему.Итак, пара вопросов:
Во-первых, возможно ли добавить подобное правило?Я бы предпочел не добавлять это пользовательское правило в каждый отдельный файл Makefile.am, поэтому что-то, что можно поместить в файл верхнего уровня (например, configure.ac), было бы замечательно.
Во-вторых, недостатокэтот подход заключается в том, что в некоторых случаях изменения в Makefile фактически не влияют на компиляцию, поэтому я в конечном итоге буду перестраивать, когда это действительно не нужно.Думаю, я готов с этим смириться (или хотя бы попробовать, чтобы увидеть, как это больно), чтобы иметь лучшую гарантию того, что мои сборки будут правильными, но есть ли лучший способ решить эту проблему?Я полагаю, что clearmake решает эту проблему, сохраняя фактическую команду компилятора (вместе с другими зависимостями), а затем сравнивая текущую команду с предыдущей, чтобы определить, нужно ли восстанавливать файл.