2015-03-20 09:34:53 +00:00
|
|
|
SolveSpace
|
|
|
|
==========
|
|
|
|
|
2016-04-19 16:57:28 +00:00
|
|
|
This repository contains the source code of [SolveSpace][], a parametric
|
|
|
|
2d/3d CAD.
|
2015-03-20 09:34:53 +00:00
|
|
|
|
|
|
|
[solvespace]: http://solvespace.com
|
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2016-11-14 02:34:15 +00:00
|
|
|
### macOS (>=10.6 64-bit), Windows (>=XP 32-bit)
|
2015-03-20 09:34:53 +00:00
|
|
|
|
2016-11-14 02:34:15 +00:00
|
|
|
Binary packages for macOS and Windows are available via
|
2016-07-25 04:21:16 +00:00
|
|
|
[GitHub releases][rel].
|
2015-03-20 09:34:53 +00:00
|
|
|
|
2016-04-19 16:57:28 +00:00
|
|
|
[rel]: https://github.com/solvespace/solvespace/releases
|
2015-03-20 09:34:53 +00:00
|
|
|
|
|
|
|
### Other systems
|
|
|
|
|
|
|
|
See below.
|
|
|
|
|
|
|
|
Building on Linux
|
|
|
|
-----------------
|
|
|
|
|
2015-07-05 05:45:39 +00:00
|
|
|
### Building for Linux
|
|
|
|
|
2016-02-09 15:57:30 +00:00
|
|
|
You will need CMake, libpng, zlib, json-c, fontconfig, freetype, gtkmm 2.4,
|
2016-07-25 19:37:48 +00:00
|
|
|
pangomm 1.4, OpenGL and OpenGL GLU. To build tests, you will need cairo.
|
2015-07-05 05:45:39 +00:00
|
|
|
On a Debian derivative (e.g. Ubuntu) these can be installed with:
|
2015-03-20 09:34:53 +00:00
|
|
|
|
2016-06-26 13:25:06 +00:00
|
|
|
apt-get install libpng-dev libjson-c-dev libfreetype6-dev \
|
2016-02-09 15:57:30 +00:00
|
|
|
libfontconfig1-dev libgtkmm-2.4-dev libpangomm-1.4-dev \
|
2016-07-25 19:37:48 +00:00
|
|
|
libcairo2-dev libgl-dev libglu-dev cmake
|
2015-03-20 09:34:53 +00:00
|
|
|
|
2016-03-16 20:57:00 +00:00
|
|
|
Before building, check out the necessary submodules:
|
|
|
|
|
|
|
|
git submodule update --init extlib/libdxfrw
|
|
|
|
|
2015-03-20 09:34:53 +00:00
|
|
|
After that, build SolveSpace as following:
|
|
|
|
|
2016-04-19 16:57:28 +00:00
|
|
|
mkdir build
|
|
|
|
cd build
|
2016-07-25 19:37:48 +00:00
|
|
|
cmake .. -DENABLE_TESTS=OFF
|
2015-03-20 09:34:53 +00:00
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
|
Use the same code for loading resources in all executables.
All of our executables need resources; e.g. the vector font is
a resource and it is necessary for generation. Before this commit,
the GUI executable loaded the resources in a nice way, and everything
else did it in a very ad-hoc, fragile way.
After this commit, all executables are placed in <build>/bin and
follow the same algorithm:
* On Windows, resources are compiled and linked into every
executable.
* On Linux, resources are copied into <build>/res (which is
tried first) and <prefix>/share/solvespace (which is tried
second).
* On macOS, resources are copied into <build>/res (which is
tried first) and <build>/bin/solvespace.app/Contents/Resources
(which is tried second).
In practice this means that we can add as many executables as we want
without duplicating lots of code. In addition, on macOS, we can
place supplementary executables into the bundle, and they can use
resources from the bundle transparently.
2016-11-28 04:16:18 +00:00
|
|
|
The application is built as `build/bin/solvespace`.
|
2016-11-14 02:34:15 +00:00
|
|
|
|
2015-03-20 09:34:53 +00:00
|
|
|
A fully functional port to GTK3 is available, but not recommended
|
|
|
|
for use due to bugs in this toolkit.
|
|
|
|
|
2015-07-05 05:45:39 +00:00
|
|
|
### Building for Windows
|
|
|
|
|
2016-07-25 04:21:16 +00:00
|
|
|
You will need CMake and a Windows cross-compiler.
|
2015-07-05 05:45:39 +00:00
|
|
|
On a Debian derivative (e.g. Ubuntu) these can be installed with:
|
|
|
|
|
2016-07-25 04:21:16 +00:00
|
|
|
apt-get install cmake mingw-w64
|
2015-07-05 05:45:39 +00:00
|
|
|
|
2016-03-16 20:57:00 +00:00
|
|
|
Before building, check out the necessary submodules:
|
2015-07-05 05:45:39 +00:00
|
|
|
|
|
|
|
git submodule update --init
|
|
|
|
|
|
|
|
After that, build 32-bit SolveSpace as following:
|
|
|
|
|
2016-04-19 16:57:28 +00:00
|
|
|
mkdir build
|
|
|
|
cd build
|
2016-07-25 19:37:48 +00:00
|
|
|
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake \
|
|
|
|
-DENABLE_TESTS=OFF
|
|
|
|
make
|
2015-07-05 05:45:39 +00:00
|
|
|
|
|
|
|
Or, build 64-bit SolveSpace as following:
|
|
|
|
|
2016-04-19 16:57:28 +00:00
|
|
|
mkdir build
|
|
|
|
cd build
|
2016-07-25 19:37:48 +00:00
|
|
|
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \
|
|
|
|
-DENABLE_TESTS=OFF
|
|
|
|
make
|
2015-07-05 05:45:39 +00:00
|
|
|
|
Use the same code for loading resources in all executables.
All of our executables need resources; e.g. the vector font is
a resource and it is necessary for generation. Before this commit,
the GUI executable loaded the resources in a nice way, and everything
else did it in a very ad-hoc, fragile way.
After this commit, all executables are placed in <build>/bin and
follow the same algorithm:
* On Windows, resources are compiled and linked into every
executable.
* On Linux, resources are copied into <build>/res (which is
tried first) and <prefix>/share/solvespace (which is tried
second).
* On macOS, resources are copied into <build>/res (which is
tried first) and <build>/bin/solvespace.app/Contents/Resources
(which is tried second).
In practice this means that we can add as many executables as we want
without duplicating lots of code. In addition, on macOS, we can
place supplementary executables into the bundle, and they can use
resources from the bundle transparently.
2016-11-28 04:16:18 +00:00
|
|
|
The application is built as `build/bin/solvespace.exe`.
|
2015-07-05 05:45:39 +00:00
|
|
|
|
|
|
|
Space Navigator support will not be available.
|
|
|
|
|
2016-11-14 02:34:15 +00:00
|
|
|
Building on macOS
|
|
|
|
-----------------
|
2015-03-20 09:34:53 +00:00
|
|
|
|
2016-07-25 19:37:48 +00:00
|
|
|
You will need XCode tools, CMake, libpng and Freetype. To build tests, you
|
|
|
|
will need cairo. Assuming you use
|
2016-03-19 16:36:07 +00:00
|
|
|
[homebrew][], these can be installed with:
|
2015-03-20 09:34:53 +00:00
|
|
|
|
2016-07-25 19:37:48 +00:00
|
|
|
brew install cmake libpng freetype cairo
|
2015-03-20 09:34:53 +00:00
|
|
|
|
|
|
|
XCode has to be installed via AppStore; it requires a free Apple ID.
|
|
|
|
|
2016-03-16 20:57:00 +00:00
|
|
|
Before building, check out the necessary submodules:
|
|
|
|
|
|
|
|
git submodule update --init extlib/libdxfrw
|
|
|
|
|
2015-03-20 09:34:53 +00:00
|
|
|
After that, build SolveSpace as following:
|
|
|
|
|
2016-04-19 16:57:28 +00:00
|
|
|
mkdir build
|
|
|
|
cd build
|
2016-07-25 19:37:48 +00:00
|
|
|
cmake .. -DENABLE_TESTS=OFF
|
2015-03-20 09:34:53 +00:00
|
|
|
make
|
|
|
|
|
Use the same code for loading resources in all executables.
All of our executables need resources; e.g. the vector font is
a resource and it is necessary for generation. Before this commit,
the GUI executable loaded the resources in a nice way, and everything
else did it in a very ad-hoc, fragile way.
After this commit, all executables are placed in <build>/bin and
follow the same algorithm:
* On Windows, resources are compiled and linked into every
executable.
* On Linux, resources are copied into <build>/res (which is
tried first) and <prefix>/share/solvespace (which is tried
second).
* On macOS, resources are copied into <build>/res (which is
tried first) and <build>/bin/solvespace.app/Contents/Resources
(which is tried second).
In practice this means that we can add as many executables as we want
without duplicating lots of code. In addition, on macOS, we can
place supplementary executables into the bundle, and they can use
resources from the bundle transparently.
2016-11-28 04:16:18 +00:00
|
|
|
The application is built in `build/bin/solvespace.app`, and
|
|
|
|
the executable file is `build/bin/solvespace.app/Contents/MacOS/solvespace`.
|
2015-03-20 09:34:53 +00:00
|
|
|
|
|
|
|
[homebrew]: http://brew.sh/
|
|
|
|
|
2015-07-05 05:45:39 +00:00
|
|
|
Building on Windows
|
|
|
|
-------------------
|
|
|
|
|
2016-08-07 17:19:24 +00:00
|
|
|
You will need [git][gitwin], [cmake][cmakewin] and Visual C++.
|
2015-07-05 05:45:39 +00:00
|
|
|
|
2016-08-07 17:19:24 +00:00
|
|
|
### Building with Visual Studio IDE
|
2015-07-05 05:45:39 +00:00
|
|
|
|
2016-02-10 10:48:42 +00:00
|
|
|
Check out the git submodules. Create a directory `build` in
|
|
|
|
the source tree and point cmake-gui to the source tree and that directory.
|
|
|
|
Press "Configure" and "Generate", then open `build\solvespace.sln` with
|
2015-07-05 05:45:39 +00:00
|
|
|
Visual C++ and build it.
|
|
|
|
|
2016-08-07 17:19:24 +00:00
|
|
|
### Building with Visual Studio in a command prompt
|
2016-02-10 10:48:42 +00:00
|
|
|
|
|
|
|
First, ensure that git and cl (the Visual C++ compiler driver) are in your
|
|
|
|
`%PATH%`; the latter is usually done by invoking `vcvarsall.bat` from your
|
|
|
|
Visual Studio install. Then, run the following in cmd or PowerShell:
|
|
|
|
|
|
|
|
git submodule update --init
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2016-07-25 19:37:48 +00:00
|
|
|
cmake .. -G "NMake Makefiles" -DENABLE_TESTS=OFF
|
2016-02-10 10:48:42 +00:00
|
|
|
nmake
|
|
|
|
|
2016-08-07 17:19:24 +00:00
|
|
|
### Building with MinGW
|
2016-02-10 10:48:42 +00:00
|
|
|
|
|
|
|
It is also possible to build SolveSpace using [MinGW][mingw], though
|
|
|
|
Space Navigator support will be disabled.
|
|
|
|
|
|
|
|
First, ensure that git and gcc are in your `$PATH`. Then, run the following
|
|
|
|
in bash:
|
|
|
|
|
|
|
|
git submodule update --init
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2016-07-25 19:37:48 +00:00
|
|
|
cmake .. -DENABLE_TESTS=OFF
|
2016-02-10 10:48:42 +00:00
|
|
|
make
|
2015-10-27 07:34:13 +00:00
|
|
|
|
2016-08-07 17:19:24 +00:00
|
|
|
[gitwin]: https://git-scm.com/download/win
|
2015-07-05 05:45:39 +00:00
|
|
|
[cmakewin]: http://www.cmake.org/download/#latest
|
2015-10-27 07:34:13 +00:00
|
|
|
[mingw]: http://www.mingw.org/
|
2015-07-05 05:45:39 +00:00
|
|
|
|
2016-11-14 02:34:15 +00:00
|
|
|
Debugging a crash
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
SolveSpace releases are throughly tested but sometimes they contain crash
|
|
|
|
bugs anyway. The reason for such crashes can be determined only if the executable
|
|
|
|
was built with debug information.
|
|
|
|
|
|
|
|
### Debugging a released version
|
|
|
|
|
|
|
|
The Linux distributions usually include separate debug information packages.
|
|
|
|
On a Debian derivative (e.g. Ubuntu), these can be installed with:
|
|
|
|
|
|
|
|
apt-get install solvespace-dbg
|
|
|
|
|
|
|
|
The macOS releases include the debug information, and no further action
|
|
|
|
is needed.
|
|
|
|
|
|
|
|
The Windows releases include the debug information on the GitHub
|
|
|
|
[release downloads page](https://github.com/solvespace/solvespace/releases).
|
|
|
|
|
|
|
|
### Debugging a custom build
|
|
|
|
|
|
|
|
If you are building SolveSpace yourself on a Unix-like platform,
|
|
|
|
configure or re-configure SolveSpace to produce a debug build, and
|
|
|
|
then re-build it:
|
|
|
|
|
|
|
|
cd build
|
|
|
|
cmake .. -DCMAKE_BUILD_TYPE=Debug [other cmake args...]
|
|
|
|
make
|
|
|
|
|
|
|
|
If you are building SolveSpace yourself using the Visual Studio IDE,
|
|
|
|
select Debug from the Solution Configurations list box on the toolbar,
|
|
|
|
and build the solution.
|
|
|
|
|
|
|
|
### Debugging with gdb
|
|
|
|
|
|
|
|
gdb is a debugger that is mostly used on Linux. First, run SolveSpace
|
|
|
|
under debugging:
|
|
|
|
|
|
|
|
gdb [path to solvespace executable]
|
|
|
|
(gdb) run
|
|
|
|
|
|
|
|
Then, reproduce the crash. After the crash, attach the output in
|
|
|
|
the console, as well as output of the following gdb commands to
|
|
|
|
a bug report:
|
|
|
|
|
|
|
|
(gdb) backtrace
|
|
|
|
(gdb) info locals
|
|
|
|
|
|
|
|
If the crash is not easy to reproduce, please generate a core file,
|
|
|
|
which you can use to resume the debugging session later, and provide
|
|
|
|
any other information that is requested:
|
|
|
|
|
|
|
|
(gdb) generate-core-file
|
|
|
|
|
|
|
|
This will generate a large file called like `core.1234` in the current
|
|
|
|
directory; it can be later re-loaded using `gdb --core core.1234`.
|
|
|
|
|
|
|
|
### Debugging with lldb
|
|
|
|
|
|
|
|
lldb is a debugger that is mostly used on macOS. First, run SolveSpace
|
|
|
|
under debugging:
|
|
|
|
|
|
|
|
lldb [path to solvespace executable]
|
|
|
|
(lldb) run
|
|
|
|
|
|
|
|
Then, reproduce the crash. After the crash, attach the output in
|
|
|
|
the console, as well as output of the following gdb commands to
|
|
|
|
a bug report:
|
|
|
|
|
|
|
|
(lldb) backtrace all
|
|
|
|
(lldb) frame variable
|
|
|
|
|
|
|
|
If the crash is not easy to reproduce, please generate a core file,
|
|
|
|
which you can use to resume the debugging session later, and provide
|
|
|
|
any other information that is requested:
|
|
|
|
|
|
|
|
(lldb) process save-core "core"
|
|
|
|
|
|
|
|
This will generate a large file called `core` in the current
|
|
|
|
directory; it can be later re-loaded using `lldb -c core`.
|
|
|
|
|
2015-03-20 09:34:53 +00:00
|
|
|
License
|
|
|
|
-------
|
|
|
|
|
|
|
|
SolveSpace is distributed under the terms of the [GPL3 license](COPYING.txt).
|