Over the past couple of months, the Microsoft C++ team reached out to a series of customers voting on a suggestion ticket asking for Remote Linux Unit Testing support to understand their full set of interactions and needs with CMake and remote Linux scenarios in Visual Studio. After these discussions, we built out a backlog of work items to deliver on any pain points in their experiences.
One of the customers we interviewed and worked closely with during the process was Georg Zankl, a software developer for Genetec. Georg manages a project that uses dev containers and CMake. Our team helped Georg to bridge the gap in his developer workflows between Visual Studio and VS Code, so that his team can use Visual Studio and benefit from this more powerful IDE, while having a reproducible dev environment in VS Code.
Specifically, he previously could not use CMake Presets with his Docker environment in Visual Studio, and his CTests were not discoverable in the Test Explorer UI. However, after working with the Microsoft C++ team, his CMake builds are now enabled in dev containers in Visual Studio, allowing him to utilize Visual Studio’s powerful IntelliSense and features.
Below is an interview with Georg on his overall experience. Thank you, Georg, for working with us!
What does your team do?
We develop and deploy algorithms based on Deep Learning and Computer Vision for real-time video processing.
We use very large open-source libraries for video processing, Computer Vision, and Deep Learning. Usually, we require customized configurations and builds of those all while continuously updating them. We rely on docker and vcpkg (with nuget caching) to get reproducible, efficient builds. The builds of our C++ code are generally integrated in containerized C# applications.
What was your prior development environment for managing your projects?
We use Windows workstations but deploy on Linux. We’ve used VS Code as it has very good support for this kind of development across programming languages, due to the dev container support. On the other hand, Visual Studio is more powerful with its IntelliSense and extensions for C++. Visual Studio had support for dev containers, which was a step for us to utilize the powerful IDE features with our workflow. However, it had some issues which were preventing us from utilizing this IDE. Most notably, CTest tests running from the UI did not work in the container, and the CMake Presets that included a path in our docker image were not properly recognized by Visual Studio and instead reverted to a default configuration.
What was your experience working with the Microsoft C++ team? How did it enable you to adopt Visual Studio?
The Microsoft C++ team was very proactive in enabling our workflows and addressed the dev container issues for us step-by-step.
CMake Presets including paths in the docker image and CTests now work for our environments in Visual Studio. The Visual Studio team worked diligently to ensure dev container support was available for these scenarios.
We can now use Visual Studio with pretty much the same setup that we use in VS Code, while benefiting from the more powerful IDE. With the fixes applied, VS CMake builds in dev containers work very well for us. All our tooling (gcc, ninja, cmake, vcpkg, ..) is now validated and versioned through our baseline docker container and developers can get started right away with Visual Studio or VS Code, simply by opening the project with devcontainers.
Now, Genetec (and you) has first-class VS support available for using dev containers with their CMake project. Visual Studio is now more versatile than ever for remote Linux C++ developers who are looking to have reproducible developer environments across their IDEs.
Please try out Visual Studio 17.11 Preview 2 for this latest dev container support.
The Microsoft C++ team would love to hear from any teams that work with our IDE and would like to see improvements with their remote Linux and/or CMake scenarios. Please reach out to us at visualcpp@microsoft.com.
0 comments