Библиотека Autotools и элемент управления выводом объектного файла

Похоже, что вы подделали миграцию 0006 вперед, вы должны также подделать ее назад:

manage.py migrate --fake yourapp 0005

Это установит текущую миграцию на 0005.

По-видимому, вы хотите вернуться обратно к 0002:

manage.py migrate --fake yourapp 0002

, а затем начать заново с 0003:

manage.py migrate yourapp
7
задан John Bellone 18 June 2009 в 23:23
поделиться

2 ответа

Система сборки GNU выполняет не используйте каталоги obj / , поэтому автоинструменты не предназначены для поддержки этого.

Однако я могу придумать два способа обойти это.

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

mkdir builddir
cd builddir
../path-to-sourcedir/configure
make

. Затем любой выходной файл будет создан в каталоге builddir / . Эта схема компиляции позволяет скомпилировать исходный код, хранящийся в каталоге только для чтения (это имело больше смысла в те годы, когда FSF распространял компакт-диски с несжатым исходным кодом), или скомпилировать один и тот же исходный код с разными настройками (или даже для разных архитектур).

Как упаковщик, единственный способ заставить свой пакет собирать все в obj / - это поместить свой Makefile.am в obj / и объявите там все свои правила сборки. Это будет означать, что obj / Makefile.am будет выглядеть так:

bin_PROGRAMS = foo bar
foo_SOURCES = ../src/foo/main.c ../src/foo/help.c ../src/foo/list.c
bar_SOURCES = ../src/bar/bar.c 

и т. Д. Я помню, что 10 лет назад POSE, эмулятор Palm OS, использовал настройку, подобную описанной выше. Я не рекомендую его, так как он не обслуживается. На самом деле лучше придерживаться философии инструментов и использовать системы сборки, которые работают как другие пакеты GNU.

Для введения в систему сборки GNU я рекомендую прочитать введение в руководство по Automake: единственный способ заставить свой пакет собирать все в obj / - это поместить ваш Makefile.am в obj / и объявить там все свои правила сборки . Это будет означать, что obj / Makefile.am будет выглядеть так:

bin_PROGRAMS = foo bar
foo_SOURCES = ../src/foo/main.c ../src/foo/help.c ../src/foo/list.c
bar_SOURCES = ../src/bar/bar.c 

и т. Д. Я помню, что 10 лет назад POSE, эмулятор Palm OS, использовал настройку, подобную описанной выше. Я не рекомендую его, так как он не обслуживается. На самом деле лучше придерживаться философии инструментов и использовать системы сборки, которые работают как другие пакеты GNU.

Для введения в систему сборки GNU я рекомендую прочитать введение в руководство по Automake: единственный способ заставить свой пакет собирать все в obj / - это поместить ваш Makefile.am в obj / и объявить там все свои правила сборки . Это будет означать, что obj / Makefile.am будет выглядеть так:

bin_PROGRAMS = foo bar
foo_SOURCES = ../src/foo/main.c ../src/foo/help.c ../src/foo/list.c
bar_SOURCES = ../src/bar/bar.c 

и т. Д. Я помню, что 10 лет назад POSE, эмулятор Palm OS, использовал настройку, подобную описанной выше. Я не рекомендую его, так как он не обслуживается. На самом деле лучше придерживаться философии инструментов и использовать системы сборки, которые работают как другие пакеты GNU.

Для введения в систему сборки GNU я рекомендую прочитать введение в руководство по Automake: Это будет означать, что obj / Makefile.am будет выглядеть так:

bin_PROGRAMS = foo bar
foo_SOURCES = ../src/foo/main.c ../src/foo/help.c ../src/foo/list.c
bar_SOURCES = ../src/bar/bar.c 

и т. Д. Я помню, что 10 лет назад POSE, эмулятор Palm OS, использовал настройку, подобную описанной выше. Я не рекомендую его, так как он не обслуживается. На самом деле лучше придерживаться философии инструментов и использовать системы сборки, которые работают как другие пакеты GNU.

Для введения в систему сборки GNU я рекомендую прочитать введение в руководство по Automake: Это будет означать, что obj / Makefile.am будет выглядеть так:

bin_PROGRAMS = foo bar
foo_SOURCES = ../src/foo/main.c ../src/foo/help.c ../src/foo/list.c
bar_SOURCES = ../src/bar/bar.c 

и т. Д. Я помню, что 10 лет назад POSE, эмулятор Palm OS, использовал настройку, подобную описанной выше. Я не рекомендую его, так как он не обслуживается. На самом деле лучше придерживаться философии инструментов и использовать системы сборки, которые работают как другие пакеты GNU.

Для введения в систему сборки GNU я рекомендую прочитать введение в руководство по Automake: http://www.gnu.org/software/automake/manual/automake.html#GNU-Build-System

Особенно раздел вариантов использования. Если вас не интересуют эти варианты использования, я думаю, что лучше всего НЕ использовать Automake и создавать свои собственные файлы Makefile. В противном случае вы будете продолжать пытаться заставить Automake делать то, для чего он не предназначен, и вы быстро возненавидите это.

РЕДАКТИРОВАТЬ 26.08.2013 : Обратите внимание, что проект Automake, использующий подкаталог с именем с использованием obj / , не переносится в BSD make.

12
ответ дан 6 December 2019 в 23:12
поделиться

Самый простой способ сделать это - установить "libdir" в каталог, в котором вы хотите, чтобы эти файлы помещались, и использовать цель установки, чтобы скопировать их туда.

Это могло бы тем не менее, предотвратить использование цели install в обычном понимании.

-1
ответ дан 6 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: