forked from tsai/mathnet-numerics
7 changed files with 180 additions and 71 deletions
@ -0,0 +1,143 @@ |
|||||
|
Building Math.NET Numerics |
||||
|
========================== |
||||
|
|
||||
|
If you do not want to use the official binaries, or if you like to modify, |
||||
|
debug or contribute, you can compile locally either using Visual Studio or |
||||
|
manually with the build scripts. |
||||
|
|
||||
|
VisualStudio or Xamarin Studio |
||||
|
------------------------------ |
||||
|
|
||||
|
The Visual Studio solutions should build out of the box, without any preparation |
||||
|
steps or package restores. Tests can be run with the usual integrated NUnit test |
||||
|
runners or ReSharper. |
||||
|
|
||||
|
MSBuild or XBuild |
||||
|
----------------- |
||||
|
|
||||
|
Instead of a compatible IDE you can also build the solutions directly with |
||||
|
`msbuild`, or on Mono with `xbuild`. |
||||
|
|
||||
|
msbuild MathNet.Numerics.sln # only build for .Net 4 (main solution) |
||||
|
msbuild MathNet.Numerics.Net35Only.sln # only build for .Net 3.5 |
||||
|
msbuild MathNet.Numerics.All.sln # full build with .Net 4, 3.5 and PCL profiles |
||||
|
xbuild MathNet.Numerics.sln # build with Mono, e.g. on Linux or Mac |
||||
|
|
||||
|
FAKE |
||||
|
---- |
||||
|
|
||||
|
The fully automated build including unit tests, documentation and api |
||||
|
reference, NuGet and Zip packages is using [FAKE](http://fsharp.github.io/FAKE/). |
||||
|
|
||||
|
FAKE itself is not included in the repository but it will download and bootstrap |
||||
|
itself automatically when build.cmd is run the first time. Note that this step |
||||
|
is *not* required when using Visual Studio or `msbuild` directly. |
||||
|
|
||||
|
build.cmd # normal build (.Net 4.0), run unit tests (.Net on Windows) |
||||
|
./build.sh # normal build (.Net 4.0), run unit tests (Mono on Linux/Mac, .Net on Windows) |
||||
|
|
||||
|
build.cmd Build # normal build (.Net 4.0) |
||||
|
build.cmd Build incremental # normal build, incremental (.Net 4.0) |
||||
|
build.cmd Build all # full build (.Net 4.0, 3.5, PCL) |
||||
|
build.cmd Build net35 # compatibility build (.Net 3.5 |
||||
|
build.cmd Build signed # normal build, signed/strong named (.Net 4.0) |
||||
|
|
||||
|
build.cmd Test # normal build (.Net 4.0), run unit tests |
||||
|
build.cmd Test quick # normal build (.Net 4.0), run unit tests except long running ones |
||||
|
build.cmd Test all # full build (.Net 4.0, 3.5, PCL), run all unit tests |
||||
|
build.cmd Test net35 # compatibility build (.Net 3.5), run unit tests |
||||
|
|
||||
|
build.cmd Clean # cleanup build artifacts |
||||
|
build.cmd Docs # generate documentation |
||||
|
build.cmd Api # generate api reference |
||||
|
build.cmd Zip # generate zip packages (.Net 4.0) |
||||
|
build.cmd NuGet # generate NuGet packages (.Net 4.0) |
||||
|
build.cmd NuGet all # generate normal NuGet packages (.Net 4.0, 3.5, PCL) |
||||
|
build.cmd NuGet signed # generate signed/strong named NuGet packages (.Net 4.0) |
||||
|
|
||||
|
build.cmd All # build, test, docs, api reference (.Net 4.0) |
||||
|
|
||||
|
If the build or tests fail claiming that FSharp.Core was not be found, see |
||||
|
[fsharp.org](http://fsharp.org/use/windows/) or install the |
||||
|
[Visual F# 3.0 Tools](http://go.microsoft.com/fwlink/?LinkId=261286) directly. |
||||
|
|
||||
|
Creating a Release |
||||
|
------------------ |
||||
|
|
||||
|
While only maintainers can make official releases published on NuGet and |
||||
|
referred to from the website, you can use the same tools to make your own |
||||
|
releases for your own purposes. |
||||
|
|
||||
|
Versioning is controlled by the release notes. Before building a new version, |
||||
|
first add a new release header and change notes on top of the `RELEASENOTES.md` |
||||
|
document in the root directory. The fake builds pick this up and propagate it |
||||
|
to the assembly info files automatically. |
||||
|
|
||||
|
The build can then be launched by calling: |
||||
|
|
||||
|
build.sh All release # full release build |
||||
|
build.sh NuGet release # if you only need NuGet packages |
||||
|
build.sh Zip release # if you only need Zip packages |
||||
|
|
||||
|
The build script will print the current version as part of the the header banner, |
||||
|
which is also included in the release notes document in the build artifacts. |
||||
|
Example: |
||||
|
|
||||
|
// __ __ _ _ _ _ ______ _______ |
||||
|
// | \/ | | | | | | \ | | ____|__ __| |
||||
|
// | \ / | __ _| |_| |__ | \| | |__ | | |
||||
|
// | |\/| |/ _` | __| '_ \ | . ` | __| | | |
||||
|
// | | | | (_| | |_| | | |_| |\ | |____ | | |
||||
|
// |_| |_|\__,_|\__|_| |_(_)_| \_|______| |_| |
||||
|
// |
||||
|
// Math.NET Numerics - http://numerics.mathdotnet.com |
||||
|
// Copyright (c) Math.NET - Open Source MIT/X11 License |
||||
|
// |
||||
|
// Math.NET Numerics v3.5.0 |
||||
|
// Math.NET Numerics MKL Provider v1.7.0 |
||||
|
// Math.NET Numerics Data Extensions v3.1.0 |
||||
|
|
||||
|
The artifacts are then ready in the `out/packages` directory. |
||||
|
|
||||
|
Extra Packages |
||||
|
-------------- |
||||
|
|
||||
|
In addition to the core package this repository also include extra packages |
||||
|
like the MKL provider and the data extensions. Most build targets are available for |
||||
|
these packages as well, with the following prefixes: |
||||
|
|
||||
|
* `Mkl` for the MKL provider (`MklWin` or `MklLinux` if platform dependent) |
||||
|
* `Data` for the Data Extensions |
||||
|
|
||||
|
Example: `build.sh MklWinNuget release` |
||||
|
|
||||
|
Official Release Process (Maintainers only) |
||||
|
------------------------------------------- |
||||
|
|
||||
|
* Update `RELEASENOTES.md` file with relevant changes, attributed by contributor (if external). Set date. |
||||
|
* Update `CONTRIBUTORS.md` file (via `git shortlog -sn`) |
||||
|
|
||||
|
* Build Release: |
||||
|
|
||||
|
build.sh All release |
||||
|
|
||||
|
* Commit and push release notes and (auto-updated) assembly info files with new "Release: v1.2.3" commit |
||||
|
|
||||
|
* Publish Release: |
||||
|
|
||||
|
build.sh PublishDocs |
||||
|
build.sh PublishApi |
||||
|
build.sh PublishTag |
||||
|
build.sh PublishMirrors |
||||
|
build.sh PublishNuGet |
||||
|
|
||||
|
In theory there is also a `Publish` target to do this in one step, unfortunately |
||||
|
publishing to the NuGet gallery is quite unreliable. |
||||
|
|
||||
|
* Create new Codeplex and GitHub release, attach Zip files (to be automated) |
||||
|
* Copy artifacts to [release archive](http://1drv.ms/1lMtdNi) (to be automated) |
||||
|
* Consider a tweet via [@MathDotNet](https://twitter.com/MathDotNet) |
||||
|
* Consider a post to the [Google+ site](https://plus.google.com/112484567926928665204) |
||||
|
* Update Wikipedia release version and date for the |
||||
|
[Math.NET Numerics](http://en.wikipedia.org/wiki/Math.NET_Numerics) and |
||||
|
[Comparison of numerical analysis software](http://en.wikipedia.org/wiki/Comparison_of_numerical_analysis_software) articles. |
||||
Loading…
Reference in new issue