From 3603b07426a3e7e00a35a82382411e50d4730d28 Mon Sep 17 00:00:00 2001 From: Marek Roszko Date: Sun, 11 Oct 2020 19:54:03 -0400 Subject: [PATCH] Add initial visual studio build instructions --- CMakeSettings.json.sample | 266 +++++++++++++++++++++++++ Documentation/development/compiling.md | 90 ++++++++- 2 files changed, 347 insertions(+), 9 deletions(-) create mode 100644 CMakeSettings.json.sample diff --git a/CMakeSettings.json.sample b/CMakeSettings.json.sample new file mode 100644 index 0000000000..9fbb013d5b --- /dev/null +++ b/CMakeSettings.json.sample @@ -0,0 +1,266 @@ +{ + "environments": [ + { "BuildDir": "${workspaceRoot}\\build" }, + { "InstallDir": "${workspaceRoot}\\build\\install" }, + { "VcPkgDir": "D:/vcpkg/" }, + ], + "configurations": [ + { + "name": "x86-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x86" ], + "buildRoot": "${env.BuildDir}\\${name}", + "installRoot": "${env.InstallDir}\\${name}", + "addressSanitizerEnabled": true, + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "KICAD_SPICE", + "value": "ON", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_PYTHON3", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_MODULES", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCE", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCC", + "value": "ON", + "type": "BOOL" + }, + { + "name": "KICAD_BUILD_QA_TESTS", + "value": "False", + "type": "BOOL" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON_PHOENIX", + "value": "OFF", + "type": "BOOL" + }, + { + "name": "KICAD_WIN32_DPI_AWARE", + "value": "ON", + "type": "BOOL" + } + ], + "cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake" + }, + { + "name": "x86-Release", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ "msvc_x86" ], + "buildRoot": "${env.BuildDir}\\${name}", + "installRoot": "${env.InstallDir}\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "KICAD_SPICE", + "value": "ON", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_PYTHON3", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_MODULES", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCE", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCC", + "value": "ON", + "type": "BOOL" + }, + { + "name": "KICAD_BUILD_QA_TESTS", + "value": "False", + "type": "BOOL" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON_PHOENIX", + "value": "OFF", + "type": "BOOL" + }, + { + "name": "KICAD_WIN32_DPI_AWARE", + "value": "ON", + "type": "BOOL" + } + ], + "cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake" + }, + { + "name": "x64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${env.BuildDir}\\${name}", + "installRoot": "${env.InstallDir}\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "KICAD_SPICE", + "value": "ON", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_PYTHON3", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_MODULES", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCE", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCC", + "value": "ON", + "type": "BOOL" + }, + { + "name": "KICAD_BUILD_QA_TESTS", + "value": "False", + "type": "BOOL" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON_PHOENIX", + "value": "OFF", + "type": "BOOL" + }, + { + "name": "KICAD_WIN32_DPI_AWARE", + "value": "ON", + "type": "BOOL" + } + ], + "cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake" + }, + { + "name": "x64-Release", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${env.BuildDir}\\${name}", + "installRoot": "${env.InstallDir}\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "KICAD_SPICE", + "value": "ON", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_PYTHON3", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_SCRIPTING_MODULES", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCE", + "value": "OFF", + "type": "STRING" + }, + { + "name": "KICAD_USE_OCC", + "value": "ON", + "type": "BOOL" + }, + { + "name": "KICAD_BUILD_QA_TESTS", + "value": "False", + "type": "BOOL" + }, + { + "name": "KICAD_SCRIPTING_WXPYTHON_PHOENIX", + "value": "OFF", + "type": "BOOL" + }, + { + "name": "KICAD_WIN32_DPI_AWARE", + "value": "ON", + "type": "BOOL" + } + ], + "cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake" + } + ] +} \ No newline at end of file diff --git a/Documentation/development/compiling.md b/Documentation/development/compiling.md index 7b6b186edb..0f0b3815f4 100644 --- a/Documentation/development/compiling.md +++ b/Documentation/development/compiling.md @@ -324,9 +324,16 @@ CMAKE_INSTALL_PREFIX option to specify a different install path. # Building KiCad on Windows # {#build_windows} -The preferred Windows build environment is [MSYS2][]. The [MinGW][] build environment is still -supported but it is not recommended because the developer is responsible for building *all* of -the dependencies from source which is a huge and frustrating undertaking. The [MSYS2][] project +The preferred Windows build environment is currently [MSYS2][]. +[Visual Studio][] with [vcpkg][] is also a supported build environment +but does not yet fully support all KiCad features. + + +## Building using MSYS2 ## {#msys2_build} + +### Setup + +The [MSYS2][] project provides packages for all of the require dependencies to build KiCad. To setup the [MSYS2][] build environment, depending on your system download and run either the [MSYS2 32-bit Installer][] or the [MSYS2 64-bit Installer][]. After the installer is finished, update to the latest @@ -334,8 +341,7 @@ package versions by running the `msys2_shell.cmd` file located in the MSYS2 inst running the command `pacman -Syu`. If the msys2-runtime package is updated, close the shell and run `msys2_shell.cmd`. -## Building using MSYS2 ## {#msys2_build} - +### Building The following commands assume you are building for 64-bit Windows, and that you already have the KiCad source code in a folder called `kicad-source` in your home directory. See below for changes if you need to build for 32-bit instead. Run `mingw64.exe` from the MSYS2 @@ -377,13 +383,13 @@ change the paths in the cmake configuration from `/mingw64` to `/mingw32`. For debug builds, run the cmake command with `-DCMAKE_BUILD_TYPE=Debug` from the `build/debug` folder. -## Known MSYS2 Build Issues ## {#known_issues_msys2} +### Known MSYS2 Build Issues ## {#known_issues_msys2} There are some known issues that are specific to MSYS2. This section provides a list of the currently known issues when building KiCad using MSYS2. -### 64-bit Package of Boost 1.59 ### {#ki_msys2_64bit_boost} +#### 64-bit Package of Boost 1.59 ### {#ki_msys2_64bit_boost} The context library of the x86_64 package of Boost version 1.59 is broken and will cause KiCad to crash. You must downgrade to version 1.57 by running the command: @@ -398,13 +404,13 @@ configure pacman to prevent upgrading the 64-bit Boost package by adding: to your /etc/pacman.conf file. -### Building with Boost 1.70 ### {#ki_msys2_boost_1_70} +#### Building with Boost 1.70 ### {#ki_msys2_boost_1_70} There is an issue building KiCad with Boost version 1.70 due to CMake not defining the proper link libraries during configuration. Boost 1.70 can be used but `-DBoost_NO_BOOST_CMAKE=ON` needs to be added during CMake configuration to insure the link libraries are properly generated. -### Building OCE from source +#### Building OCE from source KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in x86_64 systems as of March 2018. In order to work around this, you can build OCE from source on @@ -419,6 +425,70 @@ compilation errors about missing files, it is probably because your path is too cd /c/mwp/mingw-w64-oce makepkg-mingw -is +## Building using Visual Studio (2019) ## {#vs_build} + +### Environment Setup + +#### Visual Studio +You must first install [Visual Studio][] with the **Desktop development with C++** feature set installed. + + +#### vcpkg +**If you are new to vcpkg** you must, pick a spot on your system to put it. +Then run these three commands + +``` +git clone https://github.com/microsoft/vcpkg +.\vcpkg\bootstrap-vcpkg.bat +.\vcpkg\vcpkg integrate install +``` + +which will give you a vcpkg install ready to use with the next steps + +## KiCad Specific Setup. + +vcpkg defaults to x86-windows even on 64-bit machines, +it is advised for ease of use you set a **USER** or **SYSTEM** environment variable +with the name **VCPKG_DEFAULT_TRIPLET** and value **x64-windows** + +KiCad still supports 32-bit builds for now but may not in the future, thus 64-bit is preferred. + +### 1. Install vcpkg packages +The following packages are required for vcpkg +``` +.\vcpkg install boost +.\vcpkg install cairo +.\vcpkg install curl +.\vcpkg install glew +.\vcpkg install gettext +.\vcpkg install glm +.\vcpkg install icu +.\vcpkg install ngspice +.\vcpkg install opencascade +.\vcpkg install opengl +.\vcpkg install openssl +.\vcpkg install python3 +.\vcpkg install wxwidgets +.\vcpkg install zlib +``` + +If you did not set the **VCPKG_DEFAULT_TRIPLET** environment variable, you will have to append +:x64-windows to end of each packages name, `boost:x64-windows` for example. + +### 2. CMakeSettings.json +Contained in the build root is a `CMakeSettings.json.sample`, copy and rename this file to `CMakeSettings.json` +Edit `CMakeSettings.json` update the VcPkgDir environment variable up top to match the location of your vcpkg clone. +``` +{ "VcPkgDir": "D:/vcpkg/" }, +``` + +### 3. "Open Folder" in Visual Studio +Launch Visual Studio (only after completing the above steps). + +When the initial wizard launches, select to **Open a local folder** +This is the correct way to make Visual Studio directly handle *CMake* projects. + + # Building KiCad on macOS # {#build_osx} As of V5, building and packaging for macOS can be done using [kicad-mac-builder][], @@ -558,3 +628,5 @@ you will have to apply the Boost patches in the KiCad source [patches folder][]. [libocc]: https://www.opencascade.com/content/overview [libngspice]: https://sourceforge.net/projects/ngspice/ [ZLib]: http://www.zlib.net/ +[vcpkg]: https://github.com/microsoft/vcpkg +[Visual Studio]: https://visualstudio.microsoft.com/vs/ \ No newline at end of file