I’ve tried building this thing using CMake and Visual Studio and CMake seems to keep picking up cygwin headers for Visual Studio builds and I can’t seem to make things better. For now not worth the pain. I’m probably going back to C# with C++/CLI to get this working with C APIs and C# for MongoDB access.
I’m certain that I could get this building with enough effort. The code looks reasonable and I can put together the projects myself. I’m not all that inclined to go there though as I’d have to re-do this every time through. I’m not familiar enough with CMake to try modifying that part of the process.
Ok…not quite giving up. I did find that CMake appears to be adding a cygwin header folder to the projects. If I manually remove this from them the build goes further. The default build configuration appears to be 32 bit which is also an issue for me. Perhaps I’ll do a little more before I completely give up.
Looking at getting a bit of C++ file processing code done for some home sandbox tooling reasons. Grabbed the source code.
Source code asks for boost as a polyfill for C++ 2017 (optional and something else) with MSVC 2017. Grabbed boost. Got to build boost, really would like to build the full kit if I’m going to build it at all. Grabber zlib and libbz2. Now looking at any other dependencies needed to build a reasonably complete boost build locally.
Heading off to see the Captain Marvel movie and will continue with this (along with some presentation prep I need to do this weekend and some overflow work items I need to look into). Should be an interesting if busy weekend…
This is once again reminding me why C# and Java are so much more productive than C++ for many things. In C# I’d nuget the mongodb drivers. Up to date versions of any supporting libraries would be pulled in as needed and I’d be writing code in short order. I love C++ for its power and flexibility, but as a tool to get higher level logic in place it is not holding up well…
Add in building bjam to build boost with and then grabbing CMake to build the mongodb drivers with…making sure that the build processes find the right compiler (I’ve had at least one run where my build grabbed the g++ compiler out of the path even though the visual studio tools were there as well.
I started adding in concrete MongoDB support to the tool code I’m building. Last night I incorporated the drivers into the solution and set up the connection code for the database. My initial attempt to directly use the C++/CLI object to push a record into the database failed but I expect to add a class that is properly serializable to BSON tonight and get volume information persistence working. I still need to get a better handle on updates in MongoDB. I know there are various sorts of atomic test and set sorts of operations on documents and in order to make this work properly with concurrent access, I need to understand those operations and use them to ensure that updates don’t ‘walk’ on themselves.
When I have a bit more time to type, I’ll add in more details on the MongoDB driver work and the approaches I’m using.