estructura de directorios para un proyecto que mezcla C ++ y Python

Digamos que quieres crear un proyecto de programación que mezcleC ++ yPitón. losFoo C ++ usos de la estructura del proyectoCMakey unPitón el módulo se crea usandoTrago. La estructura de árbol se vería así:

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

Ahora te gustaría hacer uso deFoo proyecto dentro de unPitón proyecto, digamosBar:

├── 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

Esta estructura fue creada usandoplantilla de paquete de cookies. Una plantilla BoilerplatePP también está disponible para generar unCMake C ++ proyecto usando cookiecutter (noTrago parte). Así que ahora que tengo la estructura de ambos proyectos, y considerando que el desarrollo se llevará a cabo principalmente enPitón y el proyecto se ejecutará en diferentes sistemas, necesito abordar las siguientes preguntas:

¿Cuál es la mejor manera de mezclarlos? ¿Debo contraer ambos directorios raíz? Debería tener elFoo C ++ proyecto como un directorio de laBar proyecto o al revés? Puedo estar inclinado a poner todoC ++ estructura que se muestra arriba en una carpeta en el nivel raíz de laPitón proyecto, pero me gustaría sabera priori cualquier escollo como elCMake El sistema es bastante potente y puede ser conveniente hacerlo al revés.En caso de que decida poner elFoo proyecto como un directorio dentroBar, es elPitón paquete setuptools tan poderoso como elCMake sistema de construcción? Pregunto esto porque cuando miro elBar proyecto, en el nivel superior parece que solo hay un montón de scripts, pero no sé si esto es equivalente aCMake como soy nuevo enPitón.losBar proyecto descrito anteriormente tiene un solobar directorio, pero supongo que cada vez que este proyecto se expande, en lugar de tener muchos otros directorios en el nivel raíz, otros directorios que contienenPitón el código se colocará dentro debar. ¿Es esto correcto (en elPitónico sentido)?Supongo que se producirá un solo huevo a partir del proyecto completo, para que pueda instalarse y ejecutarse en muchos sistemas diferentes de Python. Es la integración del módulo creado por elFoo proyecto fácil? Supongo que este módulo se creará en un directorio diferente albar.Para que elPitón código dentro delbar directorio, el módulo creado porTrago tiene que estar disponible, así que supongo que la forma más sencilla de hacerlo es modificar la variable ambientalPYTHONPATH utilizando laCMake sistema. ¿Está bien o hay una mejor manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta