структура каталогов для проекта, который смешивает C ++ и Python

Скажем, вы хотите создать программный проект, который смешиваетC ++ а такжепитон,Foo C ++ структура проекта используетCMakeипитон модуль создан с использованиемглоток спиртного, Древовидная структура будет выглядеть примерно так:

├── CMakeLists.txt
├── FooConfig.cmake.in
├── FooConfigVersion.cmake.in
├── Makefile
├── README
├── foo
│   ├── CMakeLists.txt
│   ├── config.hpp.in
│   ├── foo.cpp
│   └── foo.hpp
└── swig
    └── foo.i

Теперь вы хотели бы использоватьFoo проект в рамкахпитон проект, скажемБар:

├── AUTHORS.rst
├── CONTRIBUTING.rst
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── docs
│   ├── Makefile
│   ├── authors.rst
│   ├── conf.py
│   ├── contributing.rst
│   ├── history.rst
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── readme.rst
│   └── usage.rst
├── bar
│   ├── __init__.py
│   └── bar.py
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests
│   ├── __init__.py
│   └── test_bar.py
└── tox.ini

Эта структура была создана с помощьюшаблон пакета cookiecutter, Шаблон BoilerplatePP также доступен для созданияCMake C ++ проект с использованием cookiecutter (нетглоток спиртного часть). Итак, теперь у меня есть структура обоих проектов, и, учитывая, что разработка будет происходить в основном впитон и чтобы проект запускался в разных системах, мне нужно ответить на следующие вопросы:

Какой лучший способ их смешать? Должен ли я свернуть оба корневых каталога? Должен ли я иметьFoo C ++ проект в качестве каталогаБар проект или наоборот? Я могу быть склонен поставить весьC ++ структура показана выше в папке на корневом уровнепитон проект, но я хотел бы знатьаприори любые подводные камни какCMake Система достаточно мощная, и может быть удобно сделать это наоборот.В случае, если я решу поставитьFoo проект как каталог внутриБар, этопитон пакет setuptools такой же мощный, какCMake построить систему? Я спрашиваю это, потому что, когда я смотрю наБар проект, на верхнем уровне кажется, что есть только куча сценариев, но я не знаю, является ли это эквивалентомCMake как я новичок впитон.Бар Проект, изложенный выше, имеет одинбар каталог, но я предполагаю, что всякий раз, когда этот проект расширяется, вместо множества других каталогов на корневом уровне, другие каталоги, содержащиепитон код будет размещен вбар, Это правильно (ввещий смысл)?Я предполагаю, что из всего проекта будет получено одно яйцо, чтобы его можно было установить и запустить во многих различных системах Python. Является ли интеграция модуля, созданногоFoo Проект легкий? Я предполагаю, что этот модуль будет создан в другом каталоге, чембар.Для того, чтобыпитон код в пределахбар каталог, модуль, созданныйглоток спиртного должен быть доступен, поэтому я думаю, что самый простой способ сделать это - изменить переменную средыPYTHONPATH с использованиемCMake система. Это хорошо или есть лучший способ?

Ответы на вопрос(1)

Ваш ответ на вопрос