/ / Czy są jakieś niedogodności w korzystaniu z pliku Makefile.am przez setup.py? - python, c ++, autotools, automake, distutils

Czy są jakieś wady w korzystaniu z pliku Makefile.am przez setup.py? - python, c ++, autotools, automake, distutils

Pracuję nad przeniesieniem projektu z scons do autotools, ponieważ wydaje mi się, że automatycznie generuję wiele funkcji, które są irytujące do napisania w SCONScript (np. make uninstall).

Projekt opiera się głównie na C ++, ale takżezawiera niektóre moduły napisane w pythonie. Po wielu autotoolach odczytu mogę w końcu utworzyć wspólną bibliotekę, skompilować i połączyć plik wykonywalny z nią i zainstalować pliki nagłówkowe c ++. Śliczny. Teraz przychodzi ich część pytona. Przez włączenie AM_PYTHON_PATH w configure.ac, ja także instaluję moduły pythona z plikami Makefile.am takimi jak

autopy_PYTHON=autopy/__init__.py autopy/noindent.py autopy/auto.py submoda_PYTHON=autopy/submoda/moda.py autopy/submoda/modb.py autopy/submoda/modc.py autopy/submoda/__init__.py submodb_PYTHON=autopy/submodb/moda.py autopy/submodb/modb.py autopy/submodb/modc.py autopy/submodb/__init__.py

autopydir=$(pythondir)/autopy submodadir=$(pythondir)/submoda submodbdir=$(pythondir)/submodb

dist_bin_SCRIPTS=scripts/script1 scripts/script2 scripts/script3

Wydaje się, że umieszczam wszystkie moje moduły i skryptyodpowiednie lokalizacje, ale zastanawiam się, czy jest to "poprawne", ponieważ sposób instalacji modułów Pythona wydaje się być przez skrypt setup.py przez distutils. Mam skrypty setup.py wewnątrz modułów Pythona, a scons wywoływał je, dopóki nie wkroczyłem z autotoolami. Czy jedna metoda jest lepsza od drugiej? Czy nadal powinienem używać programu setup.py podczas kompilacji z autotoolami? Chciałbym zrozumieć, jak ludzie zazwyczaj rozwiązują kompilacje za pomocą c ++ i moduły pythonowe wykorzystujące autotools. Mam mnóstwo innych pytań związanych z autotoolami, ale uratuję je na później.

Odpowiedzi:

2 dla odpowiedzi № 1

Opierając się na twoim opisie, sugerowałbym, żeby twój projekt został zbudowany przy użyciu generowanych autotoolów configure i Makefile, tj. autoconf i automakei masz albo swoje configure lub Twój Makefile zajmij się wykonywaniem setup.py, aby ustawić bity Pythona.

Mam projekt, który jest głównie kod C / C ++, wraz z modułem Perl.To jest bardzo podobne do tego, co próbujesz zrobić, z wyjątkiem tego, że jest to Perl zamiast Python.

W moim Makefile (wygenerowano z Makefile.am) Mam cel, który wykonuje moduły Perla Makefile.PL, co jest analogiczne do Pythona setup.pyiw ten sposób buduję moduł Perla razem z resztą kodu C ++, płynnie razem, jako pojedynczy build. Działa całkiem dobrze.

automake"s Makefile.am jest bardzo otwarty i elastyczny, i można go łatwo dostosować i rozszerzyć, aby zawierał obce bity, takie jak te.