Answer the question
In order to leave comments, you need to log in
How to properly organize an open source project?
I'm going to spread the library in open source. Having carefully studied the organization of several open source projects that I dealt with, I came to the conclusion that, as a rule, projects have the following structure:
/src --- Sources from which you can build the library
/include --- Interface for accessing the API of the compiled library
/test --- Tests for the project code
/lib --- Compiled library , somehow stable version
/doc --- Documentation for the project
... --- Other folders - what?
README.txt ---Information for the initial acquaintance with the library
INSTALL.txt --- General information about setting up the project
LICENCE.txt --- Information about the license
Here is another example of a project: asio . The structure is not exactly the same, but it will do, as for me.
Usually working with projects organized in this way looked like this for me:
1. Using the . I clone the turnip completely, in the clone I collect the library (source folder), then copy-paste the include folder and the folder with the collected bins to my project, thus losing any connection with the turnip.
2. Testing either. I open a project with tests right in the downloaded version of the repository, manually copy-paste the lib next to the tests, compile it and see how the tests work.
I understand correctly that everything is calculated for a similar way of working with the repository? And is there any other way to organize the repository, which allows you to more tightly connect your project with version control of the library itself when working with it (now there is a copy-paste moment that breaks the connection)?
PS: Yes, perhaps this is also important. The library is written in C++.
Answer the question
In order to leave comments, you need to log in
Yes, maybe that's important too. The library is written in C++.
#include <soci/blob.h>
and not like this: #include <blob.h>
. This allows the developer to name the files briefly and however he likes (blob.h instead of soci_blob.h), while minimizing the risk of include name conflicts.
The biggest value for me in OS is the ability to abstract away from the implementation and the ability to just use the library in your code without additional complexity. Here's what you need to pay attention to first. What you described, of course, is mostly true, but the main thing is the documentation and the ability to start using the library after 3-5 minutes of familiarizing yourself with the docks.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question