При использовании системы сборки autoconf/automake, если флаги компилятора или другие переменные в Makefile.am (или даже более высоком уровне, например configure.ac) изменяются, исходные файлы C++, связанные с этим Makefile, не будут автоматически пересобраны. Это становится особенно важным, поскольку мы используем automake как часть системы непрерывной сборки, которая перекомпилирует только по мере необходимости.
Моя мысль заключалась в том, чтобы включить Makefile в качестве зависимости для файлов .o, что теоретически решит указанную выше проблему. Итак, пара вопросов:
Во-первых, можно ли добавить такое правило? Я бы предпочел не добавлять это настраиваемое правило в каждый файл Makefile.am, поэтому что-то, что можно было бы поместить в файл верхнего уровня (например, configure.ac), было бы здорово.
Во-вторых, недостатком этого подхода является то, что в некоторых случаях изменения в Makefile на самом деле не повлияли на компиляцию, поэтому в конечном итоге я буду пересобирать, когда это действительно не нужно. Думаю, я готов смириться с этим (или, по крайней мере, попробовать, чтобы увидеть, насколько это болезненно), чтобы иметь лучшую гарантию того, что мои сборки будут правильными, но есть ли лучший способ решить эту проблему? Я считаю, что clearmake решает эту проблему, сохраняя фактическую команду компилятора (вместе с другими зависимостями), а затем сравнивая текущую команду с предыдущей, чтобы определить, нужно ли регенерировать файл.
make install prefix=/some/other/prefix
, которые необходимы для таких инструментов, как GNU stow. - person Jack Kelly   schedule 04.07.2011.../somelib-v2
на.../somelib-v3
, код обязательно нужно будет перекомпилировать. Я был бы готов отказаться от настройки переменных в командной строке, если бы мог получить фактические изменения Makefile* для принудительной перекомпиляции. - person Nathan Buckles   schedule 05.07.2011