{"id":1025,"date":"2026-05-03T17:54:49","date_gmt":"2026-05-04T00:54:49","guid":{"rendered":"https:\/\/sysprogs.com\/tutorials\/?p=1025"},"modified":"2026-05-03T18:43:57","modified_gmt":"2026-05-04T01:43:57","slug":"creating-embedded-projects-on-macos","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/stm32\/macos\/","title":{"rendered":"Creating Embedded Projects on MacOS"},"content":{"rendered":"<p>This tutorial shows how to use CodeVROOM to create a basic STM32 project on MacOS.<\/p>\n<p>Before you begin, install <a href=\"https:\/\/brew.sh\/\">Homebrew<\/a> and get the <strong>gcc-arm-embedded<\/strong>, <strong>ninja-build<\/strong>, <strong>cmake<\/strong> and <strong>xz<\/strong> packages.<\/p>\n<p>Then, <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/download\/\">download the latest CodeVROOM<\/a> and mount the DMG file.<\/p>\n<ol>\n<li>CodeVROOM for MacOS can run both from the DMG file and the application folder. In this tutorial we will just simply run it directly:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1026\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg.png\" alt=\"\" width=\"1647\" height=\"848\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg.png 1647w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg-300x154.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg-1024x527.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg-768x395.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-dmg-1536x791.png 1536w\" sizes=\"(max-width: 1647px) 100vw, 1647px\" \/><\/a><\/li>\n<li>Once loaded, the main window will look like this:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1027\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd.png\" alt=\"\" width=\"2399\" height=\"1456\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd.png 2399w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd-300x182.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd-1024x621.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd-768x466.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd-1536x932.png 1536w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-mainwnd-2048x1243.png 2048w\" sizes=\"(max-width: 2399px) 100vw, 2399px\" \/><\/a>The menu will be integrated with the regular MacOS application menu.<\/li>\n<li>Use the File-&gt;New-&gt;Project command to start creating a new project. Select the Embedded C\/C++ Project Wizard:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1028\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1.png\" alt=\"\" width=\"1661\" height=\"899\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1.png 1661w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1-300x162.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1-1024x554.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1-768x416.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-new-1-1536x831.png 1536w\" sizes=\"(max-width: 1661px) 100vw, 1661px\" \/><\/a><\/li>\n<li>Proceed with the default settings on the first page:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1029\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type.png\" alt=\"\" width=\"1671\" height=\"1297\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type.png 1671w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type-1024x795.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type-768x596.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-type-1536x1192.png 1536w\" sizes=\"(max-width: 1671px) 100vw, 1671px\" \/><\/a><\/li>\n<li>The next page allows selecting a toolchain. As of 0.5, only the embedded ARM toolchain from Homebrew is supported. Select it and choose the device you would like to target:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1030\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev.png\" alt=\"\" width=\"1655\" height=\"1297\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev.png 1655w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev-300x235.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev-1024x802.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev-768x602.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-dev-1536x1204.png 1536w\" sizes=\"(max-width: 1655px) 100vw, 1655px\" \/><\/a><\/li>\n<li>Press the &#8220;download&#8221; button to get the device support package:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1031\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress.png\" alt=\"\" width=\"1652\" height=\"1298\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress.png 1652w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress-300x236.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress-1024x805.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress-768x603.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-progress-1536x1207.png 1536w\" sizes=\"(max-width: 1652px) 100vw, 1652px\" \/><\/a><\/li>\n<li>Once it gets downloaded and installed, CodeVROOM will show the configuration settings for the device:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1032\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi.png\" alt=\"\" width=\"1642\" height=\"1286\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi.png 1642w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi-300x235.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi-1024x802.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi-768x601.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-confi-1536x1203.png 1536w\" sizes=\"(max-width: 1642px) 100vw, 1642px\" \/><\/a><\/li>\n<li>Proceed with the default settings and go to the next page. Switch from &#8220;Basic samples&#8221; to &#8220;STM32CubeMX Samples&#8221;:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1033\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples.png\" alt=\"\" width=\"1671\" height=\"1291\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples.png 1671w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples-300x232.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples-1024x791.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples-768x593.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-samples-1536x1187.png 1536w\" sizes=\"(max-width: 1671px) 100vw, 1671px\" \/><\/a><\/li>\n<li>Select the FatFs_USBDisk sample:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1034\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube.png\" alt=\"\" width=\"1644\" height=\"1287\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube.png 1644w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube-300x235.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube-1024x802.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube-768x601.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-cube-1536x1202.png 1536w\" sizes=\"(max-width: 1644px) 100vw, 1644px\" \/><\/a><\/li>\n<li>Press &#8220;Finish&#8221; to generate the project. Once it is loaded, CodeVROOM will display its structure on the right side, the current file&#8217;s outline on the left, and the build status in the bottom:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1035\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded.png\" alt=\"\" width=\"2409\" height=\"1446\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded.png 2409w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded-300x180.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded-1024x615.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded-768x461.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded-1536x922.png 1536w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-loaded-2048x1229.png 2048w\" sizes=\"(max-width: 2409px) 100vw, 2409px\" \/><\/a><\/li>\n<li>Press Command+B to build the project, or use the Project-&gt;Build command:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1036\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built.png\" alt=\"\" width=\"2388\" height=\"1441\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built.png 2388w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built-300x181.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built-1024x618.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built-768x463.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built-1536x927.png 1536w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-built-2048x1236.png 2048w\" sizes=\"(max-width: 2388px) 100vw, 2388px\" \/><\/a>Once you get the project building, check out <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/cpp\/editing\/\">this tutorial<\/a> for an overview of editing features supported by the latest version.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to use CodeVROOM to create a basic STM32 project on MacOS. Before you begin, install Homebrew<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[78,74],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/1025"}],"collection":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/comments?post=1025"}],"version-history":[{"count":1,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/1025\/revisions"}],"predecessor-version":[{"id":1037,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/1025\/revisions\/1037"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/media?parent=1025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/categories?post=1025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/tags?post=1025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}