aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-04-12 13:23:38 +0200
committerGitHub <[email protected]>2023-04-12 13:23:38 +0200
commitff4ba2841e5a32067eb6d755916f9f6e83b65788 (patch)
treecf15840bf267e2f30678867a9dcc003935397af7
parentmerge (diff)
downloadzen-ff4ba2841e5a32067eb6d755916f9f6e83b65788.tar.xz
zen-ff4ba2841e5a32067eb6d755916f9f6e83b65788.zip
Update installation instructions
Now includes information on how to use `winget` to streamline installation
-rw-r--r--README.md27
1 files changed, 18 insertions, 9 deletions
diff --git a/README.md b/README.md
index 6d11184bd..971efac98 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,10 @@ To build the code you will need Visual Studio 2022 (we use c++20 features), git
* Install Visual Studio 2022
* Install [git](https://git-scm.com/download/win)
+ * You can also use `winget install git` if you have winget installed
+ * You may want to install the github CLI to manage credentials etc - `winget install github.cli`
* Install [xmake](https://xmake.io/#/getting_started)
+ * You can also use `winget install xmake` if you have winget installed
* Install vcpkg (see below)
#### Installing vcpkg
@@ -50,31 +53,37 @@ This is necessary to run pre-commit locally, which is useful in particular to ru
commit.
* Make sure python3 is installed. Version 3.11 or later should work
+ * You can install using `winget install python3`
* Run `pip install pre-commit`
### Building with Visual Studio
-We currently require Visual Studio 2022 or later. The following steps need to be run from a Command Prompt window or a Terminal instance
+We currently require a C++ compiler from Visual Studio 2022 or later. The following steps need to be run
+from a Command Prompt window or a Terminal instance
-* clone the `zen` repository if you haven't already. This requires a valid github login and you need to be part of the EpicGames organization
- * run `git clone https://github.com/EpicGames/zen.git`
+* clone the `zen` repository if you haven't already. This requires a valid github login and you need to
+ be part of the EpicGames organization
+ * run `git clone https://github.com/EpicGames/zen.git` or `gh repo clone EpicGames/zen` (you may want
+ to use `gh` to log in to github as well)
* run `xmake sln` or `xmake project -k vsxmake2022 -a x64 -y` to generate a Visual Studio solution file
* open the `vsxmake2022\zen.sln` VS solution (`start vsxmake2022\zen.sln`)
* Note: if you want full connectivity with the http.sys server implementation you currently need to run
Visual Studio in ADMIN mode since http.sys requires elevation to be able to listen on a non-local network socket.
You can start Visual Studio in admin mode by holding CTRL-SHIFT when launching Visual Studio. Alternatively
you can add an URL reservation (see below)
- * you can now build and run `zenserver` as usual from Visual Studio
+ * you can now build and run `zenserver` as usual from Visual Studio. Note that the test suite is compiled into
+ the Debug configuration only at this time, to keep Release lean
* third-party dependencies will be built the first time via the `vcpkg` integration. This is not as
fast as it could be (it does not go wide) but should only happen on the first build and will leverage
- a local build cache.
+ a local build cache
### Building with xmake
-* configure xmake `xmake config -m debug|release -a x64`
-* build zenserver `xmake build zenserver`
+* configure xmake: `xmake config -m debug|release -a x64`
+* build zenserver: `xmake build zenserver`
+ * build all targets at once: `xmake`
-Binaries are located in the `build` directory
+Compiled binaries are located in the `build` directory
## Building on Linux
@@ -168,7 +177,7 @@ Note that the command above to set the build variant to debug is optional. Tests
are only built in debug.The `xmake` flags `-vD` can be useful to diagnose
`xmake` issues.
-### Distribution compatibility
+### Linux distribution compatibility
Builds for Linux have a dependency on a modern version of the C++ library that
supports Zen's use of C++20 and the GCC-11 toolchain used (assuming the above