Estoy a punto de comenzar a trabajar en una biblioteca multiplataforma que se escribirá en C++. En el futuro, pretendo implementar enlaces para otros lenguajes como Python, Java, etc. La biblioteca debe estar disponible en las principales plataformas: win32, Linux y Mac OSX.Mejor estructura de carpetas para C++ biblioteca multiplataforma y enlaces
Aunque la aplicación es realmente una biblioteca, algunos programas básicos de consola se incluirán junto con la misma para demostración y prueba.
Me gustaría obtener una estructura de carpetas óptima antes de comenzar a almacenar cosas en Subversion.
Estoy pensando en algo como:
/project //Top level folder
/bin //Binaries ready for deployment
/linux_amd64 //Linux AMD64 platform
/debug //Debug build - duplicated in all platforms
/release //Release build - duplicated in all platforms
/linux_i386 //Linux 32-bit platform
/macosx //Mac OS X
/win32 //Windows 32-bit platform
/cygwin //Windows 32-bit platform compiled with Cygwin
/vs.net //Windows 32-bit platform compiled with Visual Studio .NET
/win64 //Windows 64-bit platform
/build //Make and build files, IDE project files
/linux_amd64 //Linux AMD64 platform
/linux_i386 //Linux 32-bit platform
/macosx //Mac OS X
/win32 //Windows 32-bit platform
/win64 //Windows 64-bit platform
/config //Configuration files that accompany the binaries
/data //Data files that accompany the binaries
/doc //Documentation
/lib //External or third-party libraries
/platforms //Platform-specific code for ...
/linux_amd64 //Linux AMD64 platform
/linux_i386 //Linux 32-bit platform
/macosx //Mac OS X
/win32 //Windows 32-bit platform
/win64 //Windows 64-bit platform
/src //Available library source code in subfolders
/src //Source code tree - this will contain main.cpp
/bindings //Bindings to other languages such as ...
/python
/java
/h //Header files
/modules //Platform-independent modules, components or subprojects
/platforms //Platform-specific code for ...
/linux_amd64 //Linux AMD64 platform-specific code
/linux_i386 //Linux 32-bit platform-specific code
/macosx
/win32 //Windows 32-bit platform-specific code
/win64 //Windows 64-bit platform
/test //Automated test scripts
Si tiene alguna sugerencia, me encantaría escucharlos. Me pregunto si hay una herramienta que pueda ayudar a crear esta estructura.
Estoy planeando usar CMake y Subversion.
Tengo una pregunta para ti: como es una lib, ¿cuál es la main.cpp y cómo va a ser utilizada por otra persona? Me estoy enfrentando a la pregunta ATM, y creo que main.cpp es en realidad una prueba de la lib. ¿No lo es? –
Tengo una respuesta relacionada aquí: [La mejor (más limpia) forma de escribir el código específico de la plataforma] (https://stackoverflow.com/a/32685299/3258851) –