Visual Studio Make A C++ Project For Mac

  1. Visual Studio On A Mac
  2. Visual Studio Professional For Mac
  3. How To Make A C++ Program On Mac Iterm
  4. C++ Project Code
  5. Make A C++ Dll In Visual Studio
  6. Free C++ Project Source Code
  7. Visual Studio Make A C++ Project For Mac

Learn to code with C-sharp on Mac: Set up MonoDevelop to create C# programs on a Mac Visual Studio Code is perfect for writing C# programs, but you can't compile and run them. It's a code editor. Using Visual Studio Code and Building and Debugging with C++ on Mac OS X Saturday, August 6th, 2016. By Michael Suodenjoki, August 2016. I wanted to play with and test Visual Studio Code's (VSCode) features for doing C++ development on the Mac platform. At work and in the past 20+ years I've mainly been using Windows, so this is somewhat different and new interesting territory for me. I have a C++ project created in Windows Visual Studio but I would like to create an executable file for Mac. Is this something I can do natively in Windows?

-->

Developer Community |System Requirements |Compatibility |Distributable Code |Xamarin |Blogs |Servicing |

Click the button to download the latest version of Visual Studio 2017 for Mac. For instructions on setup and install, see the Setup and Install Visual Studio for Mac documentation.

To learn more about Visual Studio 2017 for Mac, see Mac System Requirements and Mac Platform Targeting and Compatibility.

Visual Studio On A Mac

To learn more about other related downloads, see the Downloads page.

What's New in 7.8

Visual Studio 2017 for Mac version 7.8 Releases

  • May 13, 2019 – Visual Studio 2017 for Mac version 7.8.4
  • March 12, 2019 – Visual Studio 2017 for Mac version 7.8.3
  • February 28, 2019 – Visual Studio 2017 for Mac version 7.8.2
  • February 22, 2019 – Visual Studio 2017 for Mac version 7.8.1
  • February 20, 2019 – Visual Studio 2017 for Mac version 7.8

Release Highlights

This release focuses on improving the quality in Visual Studio for Mac through bug fixes, performance improvements, and reliability improvements.

We also updated the version of NuGet to 4.8, .NET Core SDK to 2.1.504, and .NET Core Runtime 2.1.8

Visual Studio 2017 for Mac version 7.8 (7.8.0.1624)

released February 20, 2019

Shell

  • We fixed an issue where custom key bindings for Remove Unused and Sort (Usings) don't work.
  • We fixed an issue where switching from the application and returning, does not focus on the editor correctly.
  • We fixed an issue where the cursor in editor window is lost when switching applications.
  • We fixed an issue where focusing out/into Visual Studio changes the default focused element on the UI.
  • We fixed an issue where Visual Studio for Mac would fail to track file changes for files in certain folders.
  • We fixed an issue where Visual Studio for Mac doesn't remember opened files.
  • We fixed an issue where the Toolbar selector for build configuration is disabled.
  • We fixed an issue where adding a new folder to a project does not allow instant renaming.
  • We fixed an issue where Start Debugging after Start without Debugging results in an exception for ASP.Net projects.
  • We fixed a performance issue with build output search.
  • The Run Item command on the Solution Explorer has been renamed to Run Project.
  • We fixed an issue where the welcome page is shown when loading a solution from finder.

.NET Core

  • We updated to .NET Core 2.1.8 to include a security update.
  • We fixed an issue where the create button doesn't create new project for .NET Core 3.0 preview 2.
  • We fixed an issue where .NET Core 3.0 can be selected in the New Project dialog when it is not supported.
  • We removed the VB.NET option from .NET Core projects.

ASP.NET Core

  • We fixed an issue where the Folder profile would be created with 'Default' configuration instead of 'Release'.

Web Tools

  • We fixed an issue where Publish to Azure creates a profile with the wrong name.
  • We fixed an issue where application arguments are not passed to the Azure Functions host.
  • We added the following additional Azure Functions templates
    • CosmosDB trigger
    • EventHub trigger
    • IoT Hub trigger
    • SendGrid trigger
    • ServiceBus Queue trigger
    • ServiceBus Topic trigger
  • We fixed an issue where it was not possible to publish to Azure API App instances.

Xamarin

  • We updated the Xamarin Test Cloud agent NuGet version.
  • We fixed an issue where the View Archives command would appear in .NET Core projects.

Xamarin.Forms

  • IntelliSense in Xamarin.Forms XAML files for FontFamily is now available.

Designers

  • We fixed an issue where the toolbox regressed Android designer usage.
  • We fixed an issue when attempting to drag and drop controls to iOS storyboards from the Tool Box after searching for controls does not work.

Xamarin.Android

  • We fixed an issue where the JDK notification was shown on the welcome page, even for non-Android projects.
  • We fixed an issue where launching Visual Studio for Mac without any Java installed shows 2 system prompts to install Java.
  • We fixed an issue where the Android resource update could occur at the same time as a build which could then cause build issues.
  • We fixed an issue where Visual Studio for Mac would fail to upload APK to Acer Chromebook R11.
  • We fixed an issue where new Android apps have uppercase letters in the package name.
  • We fixed an issue where 'Your project is not referencing the 'Mono.Android.Version=v8.1' framework' when AndroidUseLatestPlatformSDK is true.
  • We fixed an issue where Visual Studio for Mac does not recognize AndroidManifest in specific build configurations..
  • We fixed an issue where opening the Report A Problem dialog also displays 'Install JDK' dialog.
  • We fixed an issue where the Google Play SDK warning is shown even when publishing Ad-Hoc.

Xamarin.iOS

  • It is now possible to choose .pdf files for image assets that do not support vector images.
  • We fixed an issue where Visual Studio for Mac erroneously indicates that a Xamarin.Mac property is unavailable.
  • We fixed an issue where it is not possible to choose devices for named colors in the asset catalog.
  • We fixed an issue where the iOS simulator is no longer brought to front when starting a debug session.
  • We fixed an issue where Native References not working in iOS library projects and appear to be ignored.
  • We fixed an issue where deleting a Native Reference does not delete the the file on disk.
  • We fixed an issue where the Debugger doesn't connect to a keyboard extension on any device.

Xamarin.Mac

  • We fixed an issue where .xib templates seem to need customObjectInstantitationMethod='direct' added.
  • We fixed an issue where it is not possible to change the target framework version for Xamarin.Mac full on re-opening project options.
  • We fixed an issue where the project options for a Mac build (classic) shows incorrect UI.

Code Editor

  • We fixed an issue where the code fix preview window is too small.
  • We fixed an issue where error squiggles were not up to date.
  • We fixed an issue where the editor would freeze while typing
  • We fixed an issue where Changing the tab would not allow you to search a file
  • We fixed an issue where Using statement indenting is incorrect.
  • We fixed an issue where Roslyn throws a fatal exception (System.ArgumentOutOfRangeException).
  • We fixed an issue where formatting of parameters across multiple lines is incorrect.
  • We fixed an issue where the constructor generator would cause Visual Studio for Mac to crash.
  • We fixed an issue where smart semicolon placement causes incorrect semicolon placement.
  • We fixed an issue where typing can be slow in large files when accessibility is enabled.
  • We fixed an issue where a fatal error can occur when trying to navigate inside the editor using VoiceOver.
  • We fixed an issue where the caret location in quick fix margin is incorrect.
  • We fixed a performance issue where indent correcting is taking up too much time on large files.
  • We fixed an issue where Intellisense soft-selection is confusing.
  • We fixed an issue where Visual Studio for Mac can't open .targets files.
  • We fixed an issue where the display updates partially when commenting a collapsed method.
  • We fixed an issue where C# syntax highlight doesn't work for some of the keywords.
  • We fixed an issue where invoking some snippets from the toolbox in .cs files leads to poorly formatted code.
  • We fixed an issue where pressing Down to choose the closing tag completion in XAML IntelliSense closes the completion window.
  • We fixed an issue where the file 'redacted' could not be opened.
  • We fixed an issue where sometimes pasting fails in XAML files.
  • We fixed an issue where, when adding an attribute via Intellisense, it does not trim 'Attribute' from the name.
  • We fixed an issue where code suggestion does the wrong thing when ( is pressed after a stray arrow key.

NuGet

  • We fixed an issue where Visual Studio for Mac crashes after 'Could not add packages' error.
  • We updated the version of NuGet to 4.8.
  • NuGet package diagnostic warnings are now shown in the Solution Explorer. Any diagnostics warnings will be rendered with a warning icon and the full text of the warning available as a tool tip.
  • We fixed a set of issues with NuGet:
    • problem while restoring NuGet packages which don't have stable version.
    • The VS4Mac bundle nuget version is too old: 4.3.1.
    • Referencing packages conditionally using variable does not work correctly.
    • Xamarin.Forms app with multi target framework library referenced fail to build.
    • Visual Studio Mac Csproj build not support Item contidion.
    • Support conditional NuGet PackageReferences in multi-targeting projects.
    • Show per-framework dependencies when multi-targeting.
    • VS cannot build F# dotnet core solution.
    • Nuget restore ignore build targets.
    • NuGet restores the wrong version of Microsoft.AspNetCore.App.

Debugger

  • We fixed an issue where the debugger would fail when running on an external console on Mojave.

Test Tools

  • We fixed an issue where xUnit Fact 'DisplayName' not shown in test explorer if the name has a period at the end.
  • We fixed an issue where the text editor unit test integration ('Unit test 'name' could not be loaded') would fail.
  • We fixed a performance issue where the 'Test Results' pane has bad performance when very large amounts of text are shown.
  • We fixed an issue where the unit test integration in the editor does not properly trigger test cases.
  • We fixed an issue that could cause xunit to fail to restore.
C++

F#

  • We fixed an issue where open statements for F# must be manually added when pasting/writing code.
  • We fixed an issue where new F# projects shows IntelliSense errors.
  • We fixed an issue for F# projects where Visual Studio for Mac overwrites the project GUID to be lowercase instead of uppercase.

Project System

  • We fixed an issue where the copy & paste of a XAML file causes a disassociation between the .xaml and .xaml.cs files.
  • We fixed an issue where files are being added to ItemGroup.Compile(Remove) and this related issue - Error type of namespace not found.
  • We fixed an issue where an invalid C# file is created with a new library project.
  • We fixed an issue where it is not possible to create a culture specific .resx file through the 'New File ..' menu in the Solutions Explorer context menu.

Assembly Browser

  • We fixed an issue where the Assembly Browser shows the wrong icon for properties.
  • We fixed an issue where System.DayOfWeek enum (Wednesday) does not appear to be assigned a value.

Accessibility

  • We fixed a number of accessibility issues in this release, including several VoiceOver issues in the Debugger and in creating iOS developer certificates, and Keyboard issues in the Android SDK Manager.

Other

  • We fixed an issue where unchecking the Organize Using > Place System directives first setting does not save.
  • We fixed an issue where Visual Studio for Mac is not remembering settings.
  • We fixed an issue where Checking for updates can result in multiple prompts to sign in.

Visual Studio 2017 for Mac version 7.8.1.4

released February 22, 2019

  • We fixed an issue where Visual Studio for Mac becomes unresponsive when selecting two column view.

Visual Studio 2017 for Mac version 7.8.2.1

released February 28, 2019

  • We fixed an issue where Debugger features sometimes don't work as expected with Unity.

Visual Studio 2017 for Mac version 7.8.3.2

released March 12, 2019

  • This release contains an updated 4.8 NuGet Client, which in turn closes a NuGet Client vulnerability.
  • We fixed an issue where Using Git to publish an existing project to a new remote repository was not working.
  • We fixed an issue where Git remote operations were failing in Visual Studio for Mac:.
  • We fixed an issue where Tooltips not being shown for F# solutions.
  • We fixed an issue where The Report a Problem dialog crashes Visual Studio for Mac when entering details.
  • We fixed an issue where Visual Studio for Mac crashes while using Report a Problem if the debugger connection is lost.
  • We fixed an issue where Two sign in popup windows would show if you weren't signed in and tried to Report a Problem.
  • We fixed an issue causing warnings about missing icons to show up in the log files when using Report a Problem.
  • We fixed an issue preventing build messages from displaying in the Build Output window after building Docker Compose projects.

Visual Studio 2017 for Mac version 7.8.4.1

released May 13, 2019

  • This release fixes an issue where (Visual Studio for Mac 7.8.3 crashes after loading a second solution)[https://developercommunity.visualstudio.com/content/problem/509716/visual-studio-783-build2-crashes-after-loading-a-s.html].

Feedback

We would love to hear from you! You can report a problem through the Report a Problem option in the Visual Studio for Mac IDE, and track your feedback in the Developer Community portal. For suggesting new features you can use Suggest a Feature, these are also tracked in the Developer Community.

Visual Studio Professional For Mac

Blogs

Take advantage of the insights and recommendations available in the Developer Tools Blogs site to keep you up-to-date on all new releases and include deep dive posts on a broad range of features.

Visual Studio 2017 for Mac Release Notes History

You can view prior versions of Visual Studio 2017 for Mac release notes on the Release notes history page.

Top of Page

A great strength of C++ is the ability to target multiple platforms without sacrificing performance. If you are using the same codebase for multiple targets, then CMake is the most common solution for building your software. You can use Visual Studio for your C++ cross platform development when using CMake without needing to create or generate Visual Studio projects. Just open the folder with your sources in Visual Studio (File > Open Folder). Visual Studio will recognize CMake is being used, then use metadata CMake produces to configure IntelliSense and builds automatically. You can quickly be editing, building and debugging your code locally on Windows, and then switching your configuration to do the same on Linux all from within Visual Studio.

Teams working on these types of code bases may have developers who have different primary operating systems, e.g. some people are on Linux (and may be using the Visual Studio Code editor) and some are on Windows (probably using the Visual Studio IDE). In an environment like this, the choice of tools may be up to the developers themselves. You can use Visual Studio in an environment like this without perturbing your other team members or making changes to your source as is. If or when additional configuration is needed it is saved in flat json files that can be saved locally, or shared in source control with other developers using Visual Studio without impacting developers that are not using it.

Visual Studio isn’t just for Windows C and C++ development anymore. If you follow the tutorial below on your own machine, you will clone an open source project from GitHub, open it in Visual Studio, edit, build and debug on Windows with no changes to the project. Then Visual Studio will add a connection to a Linux machine and edit, build and debug it on that remote machine.

The next section shows you how to setup Visual Studio, followed by a section on how to configure your Linux target, and last the tutorial itself – have fun!

Setting up Visual Studio for Cross Platform C++ Development

First you need to have Visual Studio installed. If you have it installed already confirm that you have the Desktop development with C++ and Linux development with C++ workloads installed. If you don’t have Visual Studio installed use this link to install it with the minimal set of components for this tutorial selected. This minimal install is only a 3GB, depending on your download speed installation should not take more than 10 minutes.

Once that is done you are ready to go on Windows.

Configuring your Linux machine for cross platform C++ development

Visual Studio does not have a requirement for a specific distribution of Linux; use any you would like to. That can be on a physical machine, in a VM, the cloud, or even running on Windows Subsystem for Linux. The tools Visual Studio requires to be present on the Linux machine are: C++ compilers, GDB, ssh, and zip. On Debian based systems you can install these dependencies as follows.

2
wget chmod+xcmake-3.11.18033000-MSVC_2-Linux-x86_64.sh

You can see the options for running it with –help. We recommend that you use the –prefix option to specify installing in the /usr/local path as that is the default location Visual Studio looks for CMake at.

git clonehttps://github.com/bulletphysics/bullet3.git

Now open the root project folder, bullet3, that was created by cloning the repo in Visual Studio. Use the menu option File > Open > Folder which will detect and use the CMakeLists.txt file or you can use File > Open > CMake to select the desired CMakeLists.txt file directly.

You can also clone a git repo directly within Visual Studio which will automatically open the folder when you are done.

As soon as you open the folder your folder structure will be visible in the Solution Explorer.

This view shows you exactly what is on disk, not a logical or filtered view. By default, it does not show hidden files. To see them, select the show all files button in the Solution Explorer.

Step 2 – Use targets view

When you open a folder that uses CMake, Visual Studio will automatically generate the CMake cache. This will take a few moments, or longer depending on the size of your project. The status of this process is placed in the output window. It is complete when you see the message “Target info extraction done”.

C++ Project Code

After this completes, IntelliSense is configured, the project can build, and you can launch the application and debug it. Visual Studio also now understands the build targets that the CMake project produces. This enables an alternate CMake Targets View that provides a logical view of the solution. Use the Solutions and Folders button in the Solution Explorer to switch to this view.

Make A C++ Dll In Visual Studio

Here is what that view looks like for the Bullet SDK.

This gives us a more intuitive view of what is in this source base. You can see some targets are libraries and others are executables. You can expand these nodes and see the source that comprises them independent of how it is represented on disk.

Step 3 – Set breakpoint, build and run

For this tutorial, use an executable to get something that can just run and get into the debugger. Select AppBasicExampleGui and expand it. Open the file BasicExample.cpp. This is an example program that demonstrates the Bullet Physics library by rendering a bunch of cubes arranged as a single block that are falling and smash apart on hitting a surface. Next set a break point that will be triggered when you click in the running application. That is handled in a method within a helper class used by this application. To quickly get there select CommonRigidBodyBase that the struct BasicExample is derived from around line 30. Right click and choose Go to Definition. Now you are in the header CommonRigidBodyBase.h. In the browser view above your source you should see that you are in the CommonRigidBodyBase. To the right you can select members within to examine, drop that selection down and select mouseButtonCallbackwhich will take you to the definition of that function in the header.

Place a breakpoint on the first line within this function. This will trigger when you click a mouse button within the window of the application when launched under the Visual Studio debugger.

To launch the application, select the launch dropdown with the play icon that says “Select Startup Item” in the toolbar.

Free C++ Project Source Code

In the dropdown select AppBasicExampleGui.exe. Now press the launch button. This will cause the project to build our application and necessary dependencies, then launch it with the Visual Studio debugger attached. It will take a few moments while this process starts, then the application will appear.

Move your mouse into the application window, click a button, and the breakpoint will be triggered. This pause execution of your program, bring Visual Studio back to the foreground, and you will be at your breakpoint. You will be able to inspect the application variables, objects, threads, memory, and step through your code interactively using Visual Studio. You can click continue to let the application resume and exit it normally or cease execution within Visual Studio using the stop button.

What you have seen so far is by simply cloning a C++ repo from GitHub you can open the folder with Visual Studio and get an experience that provides IntelliSense, a file view, a logical view based on the build targets, source navigation, build, and debugging with no special configuration or Visual Studio specific project files. If you were to make changes to the source you would get a diff view from the upstream project, make commits, and push them back without leaving Visual Studio. There’s more though. Let’s use this project with Linux.

Step 4 – Add a Linux configuration

So far, you have been using the default x64-Debug configuration for our CMake project. Configurations are how Visual Studio understands what platform target it is going to use for CMake. The default configuration is not represented on disk. When you explicitly add a configuration a file CMakeSettings.json is created that has parameters Visual Studio uses to control how CMake is run, as well as when it is run on a remote target like Linux. To add a new configuration, select the Configuration drop down in the toolbar and select “Manage Configurations…”

The Add Configuration to CMakeSettings dialog will appear.

Here you see Visual Studio has preconfigured options for many of the platforms Visual Studio can be configured to use with CMake. If you want to continue to use the default x64-Debug configuration that should be the first one you add. You want that for this tutorial so can switch back and forth between Windows and Linux configurations. Select x64-Debug and click Select. This creates the CMakeSettings.json file with a configuration for “x64-Debug” and switches Visual Studio to use that configuration instead of the default. This happens very quickly as the provided settings are the same as the default. You will see the configuration drop down no longer says “(default)” as part of the name.

You can use whatever names you like for your configurations by changing the name parameter in the CMakeSettings.json.

Now that you have a configuration specified in the configuration dropdown Manage Configurations option opens the CMakeSettings.json file so you can adjust values there. To add a Linux configuration right click the CMakeSettings.json file in the solution explorer view and select Add Configuration.

This provides the same Add Configuration to CMakeSettings dialog you saw before. This time select Linux-Debug, then save the CMakeSettings.json file. Now in the configuration drop down select Linux-Debug.

Since this is the first time you are connecting to a Linux system the Connect to Remote System dialog will appear.

Provide the connection information to your Linux machine and click Connect. This will add that machine as your default remote machine which is what the CMakeSetttings.json for Linux-Debug is configured to use. It will also pull down the headers from your remote machine so that you get IntelliSense specific to that machine when you use it. Now Visual Studio will send your files to the remote machine, then generate the CMake cache there, and when that is done Visual Studio will be configured for using the same source base with that remote Linux machine. These steps may take some time depending on the speed of your network and power of your remote machine. You will know this is complete when the message “Target info extraction done” appears in the CMake output window.

Step 5 – Set breakpoint, build and run on Linux

Since this is a desktop application you need to provide some additional configuration information to the debug configuration. In the CMake Targets view right click AppBasicExampleGui and choose Debug and Launch settings.

This will open a file launch.vs.json that is in the hidden .vs subfolder. This file is local to your development environment. You can move it into the root of your project if you wish to check it in and save it with your team. In this file a configuration has been added for AppBasicExampleGui. These default settings work in most cases, as this is a desktop application you need to provide some additional information to launch the program in a way you can see it on our Linux machine. You need to know the value of the environment variable DISPLAY on your Linux machine, run this command to get it.

In my case this was :1. In the configuration for AppBasicExampleGui there is a parameter array “pipeArgs”. Within there is a line “${debuggerCommand}”. This is the command that launches gdb on the remote machine. Visual Studio needs to export the display into this context before that command runs. Do so by modifying that line as follows using the value of your display.

Now in order to launch and debug our application, choose the “Select Startup Item” dropdown in the toolbar and choose AppBasicExampleGui.

Now press that button or hit F5. This will build the application and its dependencies on the remote Linux machine then launch it with the Visual Studio debugger attached. On your remote Linux machine, you should see an application window appear with the same falling bunch of cubes arranged as a single block.

Move your mouse into the application window, click a button, and the breakpoint will be triggered. This pause execution of your program, bring Visual Studio back to the foreground, and you will be at your breakpoint. You should also see a Linux Console Window appear in Visual Studio. This window provides output from the remote Linux machine, and it can also accept input for stdin. It can of course be docked where you prefer to see it and it’s position will be used again in future sessions.

You will be able to inspect the application variables, objects, threads, memory, and step through your code interactively using Visual Studio. This time on a remote Linux machine instead of your local Windows environment. You can click continue to let the application resume and exit it normally or cease execution within Visual Studio using the stop button. All the same things you’d expect if this were running locally.

Look at the Call Stack window and you will see this time the Calls to x11OpenGLWindow since Visual Studio has launched the application on Linux.

What you learned and where to learn more

So now you have seen the same code base, cloned directly from GitHub, build, run, and debugged on Windows with no modifications. Then with some minor configuration settings build, run and debugged on a remote Linux machine as well. If you are doing cross platform development, we hope you find a lot to love here. Visual Studio C and C++ development is not just for Windows anymore.

Further articles

  • Original Linux C++ announcement post, this goes into depth on Linux C++ projects that use msbuild to drive remote compilation.

Documentation links

  • Open folder projects for C++ for any build system
  • Download and setup the Linux workload, the root page for Visual Studio C++ Linux documentation

This section will be updated in the future with links to new articles on Cross Platform Development with Visual Studio.

Give us feedback

Visual Studio Make A C++ Project For Mac

Use this link to download Visual Studio 2017 with everything you need to try the steps in this tutorial, then try it with your projects.

Your feedback is very important to us. We look forward to hearing from you and seeing the things you make.

As always, we welcome your feedback. We can be reached via the comments below or via email (visualcpp@microsoft.com). If you encounter other problems with MSVC or have a suggestion for Visual Studio please let us know through Help > Send Feedback > Report A Problem / Provide a Suggestion in the product, or via Developer Community. You can also find us on Twitter (@VisualC).