Автосделайте генерирующиеся двоичные файлы к мусорному ведру / вместо в src/

Я искал ответ на этот вопрос, но не мог найти пользу. Возможно, они стары, и что-то изменилось, таким образом, я спрашиваю снова.

У меня есть структура каталогов как:

my_project

  • src

  • мусорное ведро

Я хочу это, когда я действительно делаю в корневом каталоге, двоичные файлы помещаются в./мусорное ведро, вместо того, чтобы создать помехи./src. Но как?

Править: Я использую C++. Мой Makefile.am не имеет ничего специального. Просто bin_PROGRAM и _SOURCES переменные.

Когда я работаю, делают, сгенерированные двоичные файлы помещаются в./src. Я просто хочу их в./мусорное ведро.

26
задан Vitor Baptista 27 January 2010 в 03:37
поделиться

3 ответа

Вы ошиблись здесь.

Ваше дерево сборки находится везде, где вы запускаете configure . Вот как работает autoconf. Пользователи вашего пакета (которые не хотят загромождать свое дерево исходных текстов) будут ожидать, что это будет работать именно так.

Этот подход является более общим решением с гораздо большей гибкостью, чем организация, которую вы себе представляете. Например, нет ничего необычного в том, чтобы поддерживать исходные коды и создавать файлы в отдельных файловых системах.

34
ответ дан 28 November 2019 в 06:22
поделиться

Automake не очень хорошо справляется, если вы попытаетесь настроить свои каталоги по-другому, чем ожидает. То, что вы хотите, будут включать в себя письменные дополнительные правила для перемещения дворовиков на ../ BIN . После их составления, что ненужно сложно.

Если вы не хотите загромождать свой исходный каталог, попробуйте следующее:

cd my_project
mkdir build
cd build
../configure
make

, который поставит все сгенерированные файлы (например, makefiles, двоичные файлы, объектные файлы) в подкаталогах my_project / build .

27
ответ дан 28 November 2019 в 06:22
поделиться

Один из способов сказать Automake о создании бинарных файлов в определенном каталоге - добавить этот каталог прямо к имени в переменной "bin_PROGRAMS".

Рассмотрим следующий src/Makefile.am:

bin_PROGRAMS = foo
foo_SOURCES = ...
foo_CPPFLAGS = ...
foo_LDFLAGS = ...

Он создает бинарный "src/foo", но вы можете сказать Automake использовать исходные тексты в src для создания бинарного "bin/foo":

bin_PROGRAMS = $(top_builddir)/bin/foo
__top_builddir__bin_foo_SOURCES = ...
__top_builddir__bin_foo_CPPFLAGS = ...
__top_builddir__bin_foo_LDFLAGS = ...

Я пробовал это с некоторыми пакетами и даже "заставить distcheck" проглотить это. Хотя это не может быть таким уж большим взломом...

14
ответ дан 28 November 2019 в 06:22
поделиться