You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In order to compile `simplnx` you will need a C++20 compiler suite installed on your computer.
26
36
@@ -29,11 +39,13 @@ In order to compile `simplnx` you will need a C++20 compiler suite installed on
29
39
+ macOS 12.5 and Xcode 14.2 or higher
30
40
+ Linux with GCC Version 11.0 or higher or clang 14.
31
41
32
-
## Install vcpkg ##
42
+
For Python Bindings a Python version of 3.8 is the minimum version, but internally 3.11 and 3.12 are the actively used versions.
43
+
44
+
## Install vcpkg
33
45
34
46
The `simplnx` project uses the [vcpkg](https://www.github.com/microsoft/vcpkg) to manage it's dependent libraries. If this is not already installed on your system then you will need to download and compile it.
35
47
36
-
### Windows ###
48
+
### Windows
37
49
38
50
Clone the vcpkg repository into a location that it will be used from. inside your home directory or at `C:/vcpkg` is a reasonable spot. *DO NOT USE A PATH WITH SPACES IN ANY OF THE FOLDERS*.
The `bootstrap-vcpkg.bat` file should be run automatically by CMake the first time. This will create the `vcpkg.exe` file. Additionally CMake should automatically find `vcpkg.exe`. If CMake does not find it, you may need to add it to your `PATH` variable.
46
58
47
-
## Clone Appropriate Repositories ##
59
+
## Clone Appropriate Repositories
48
60
49
61
Within the folder DREAM3D-Dev clone both the `simplnx` and `DREAM3D_Data` repositories. The `DREAM3D_Data` repo is optional but does contain testing data.
50
62
@@ -54,13 +66,13 @@ Create a location to keep the `simplnx` repositories and make builds. You can do
For this example we are going to do an "in-source" build. By default git will ignore some basic names for build directories such as `Debug, Release, x64`. CMake can generate lots of project files from ninja, to nmake to Visual Studio. For this example we are going to use the `ninja` generator so we will need to keep the Debug and Release builds separated.
60
72
61
73
The first time `simplnx` is configured with CMake, VCPKG will download, build and install the needed dependent libraries. This can take a few minutes so be patient. After `simplnx` is configured you can build it using your IDE (Visual Studio) or ninja (QtCreator, CLion) or cmake itself.
62
74
63
-
### Windows with Visual Studio IDE ###
75
+
### Windows with Visual Studio IDE
64
76
65
77
This example shows how to configure simplnx to build using Visual Studio IDE
66
78
@@ -73,7 +85,7 @@ cd %BUILD_DIR%
73
85
cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALL_ROOT%/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=%BUILD_DIR% -DVCPKG_MANIFEST_FEATURES="tests;parallel" -DDREAM3D_Data_Dir=../../DREAM3D_Data ../simplnx
74
86
```
75
87
76
-
### Windows with Ninja and IDE of choice (QtCreator, CLion, command line) ###
88
+
### Windows with Ninja and IDE of choice (QtCreator, CLion, command line)
77
89
78
90
Adjust the below commands to the sytle of your shell (The below example is done in Windows Command Prompt Batch file style).
+`-DVCPKG_HOST_TRIPLET=....` Correct VCPKG triplet for your platform/operating system
135
+
+ MacOS: [x64-osx-dynamic | arm64-osx-dynamic]
136
+
+ Linux: x64-linux-dynamic
137
+
+ Windows:
138
+
139
+
### Notable CMake Arguments
122
140
123
-
## Adding Plugins ##
141
+
| Identifier | Type | Explanation |
142
+
|------------|------|-------------|
143
+
|`ITKImageProcessing_USE_JOB_POOL`|`BOOL`| When `ON` the amount of threads used to build `ITK` library plugin is capped (see `ITKImageProcessing_JOB_POOL`). Some of the `ITK` files more 2+ GB of memory to compile due to heavy templating. This is to prevent sytems from running out of memory during compilation. |
144
+
|`ITKImageProcessing_JOB_POOL`|`STRING`| If `ITKImageProcessing_USE_JOB_POOL` is `ON`, this variable is the maximum number of threads available to the `ITK` plugin during compilation. For example on a system with 32 threads and 64GB of RAM a value of `16` will prevent out-of-memory errors during compilation. |
145
+
|`SIMPLNX_BUILD_TESTS`|`BOOL`| Turning this on will compile the filter/library tests and include them in the all ctests target |
146
+
|`SIMPLNX_BUILD_DOCS`|`BOOL`| Turning this on will build the library/filters documentation, `SPHINX_BUILD_EXECUTABLE` must be defined |
147
+
|`SPHINX_BUILD_EXECUTABLE`|`PATH`| The absolute path to to the sphinx executable; *required* for `SIMPLNX_BUILD_PYTHON_DOCS` and/or `SIMPLNX_BUILD_DOCS`|
148
+
|`SIMPLNX_EXTRA_PLUGINS`|`STRING`| A list of plugin targets (separated by `;`) to include into the library. Currently the only offical additional plugin not bundled is `SimplnxReview` which is untested filters |
149
+
|`SIMPLNX_ENABLE_BENCHMARK_UTILITY`|`BOOL`| Turning this on will include the preffered benchmarking library; Be sure to **add**`benchmark`**to**`VCPKG_MANIFEST_FEATURES`**list**|
124
150
125
-
By default the **only** plugin that is compiled is the `SimplnxCore` plugin. If you would like to build any of the additional plugins you can provide additional arguments to the configuration command. **NOTE** For the `SIMPLNX_EXTRA_PLUGINS`CMake argument, if you have multiple plugins separate each with a `;` character (which is why we double quote the value for the SIMPLNX_EXTRA_PLUGINS variable.)
151
+
### Python Binding CMake Arguments
126
152
127
-
### ITKImageProcessing ###
153
+
*NOTE: Be sure to **add**`python`**to**`VCPKG_MANIFEST_FEATURES`**list** if you are enabling python bindings*. Remember to separate each manifest feature with a `;`. Example: `tests;parallel;itk;ebsd;benchmark;python`
154
+
155
+
| Identifier | Type | Explanation |
156
+
|------------|------|-------------|
157
+
|`SIMPLNX_BUILD_PYTHON`|`BOOL`| Turning this on will enable Python Bindings, but several other variables must be supplied to get it to configure. |
158
+
| `Python_EXECUTABLE |`PATH`| The absolute path to to the python executable; *required* for Python Bindings |
159
+
|`SIMPLNX_PY_DISABLE_HIDDEN_VISIBILITY`|`BOOL`| Turning this on is *required* for Python Bindings on Unix-based systems |
160
+
|`SIMPLNX_EMBED_PYTHON`|`BOOL`| Turning this on will allow you to write python filters/plugins that will be loaded/included into the final compiled library executable |
161
+
|`SIMPLNX_BUILD_PYTHON_TESTS`|`BOOL`| Turning this on will also compile the python tests and include them in the all ctests target |
162
+
|`SIMPLNX_BUILD_PYTHON_DOCS`|`BOOL`| Turning this on will build the python documentation, `SPHINX_BUILD_EXECUTABLE` must be defined |
163
+
164
+
### ITKImageProcessing
128
165
129
166
This plugin gives simplnx access to the ability to read/write images and use the **ITK** library to process images.
130
167
131
-
There are 2 arguments that need to be added to the CMake configuration command
168
+
There are 1 arguments that need to be added to the CMake configuration command
132
169
133
-
+`-DSIMPLNX_EXTRA_PLUGINS="ITKImageProcessing"`
134
170
+`-DVCPKG_MANIFEST_FEATURES="tests;parallel;itk"`
135
171
136
-
### OrientationAnalysis ###
172
+
### OrientationAnalysis
137
173
138
174
This plugin gives simplnx the ability to process typical EBSD style of data.
### Defining where VCPKG installs the dependent libraries ###
180
+
### Defining where VCPKG installs the dependent libraries
146
181
147
182
By default VCPKG will install any library that it compiles into vcpkg specific and platform specific locations. If you would like to specifically set where those libraries are installed the following cmake code will allow that:
### Disable VCPKG from checking for updates with each configuration ###
186
+
### Disable VCPKG from checking for updates with each configuration
152
187
153
188
Be default VCPKG will check for updates to the libraries that it compiles. If you would like to skip this step each time the following CMake code is needed:
154
189
155
190
+`-DVCPKG_MANIFEST_INSTALL=OFF`
156
191
157
-
## Defining where test data is stored ##
192
+
## Defining where test data is stored
158
193
159
194
Simplnx and its plugins require test files to be able to perform the unit tests. By default these will be store inside the build directory. This means that if you have multiple build directories, a separate copy of all the test files will be downloaded for each build directory. The developer can set the `DREAM3D_DATA_DIR` variable to a path that will be used. They will need to set this for **each** build directory. You **MUST** define `DREAM3D_DATA_DIR` using an absolute path. Relative paths **will not work**.
160
195
@@ -164,7 +199,7 @@ The developer can also turn off the downloading of any test data with the follow
164
199
165
200
+`-DSIMPLNX_DOWNLOAD_TEST_FILES=OFF`
166
201
167
-
## Python Bindings ##
202
+
## Python Bindings
168
203
169
204
Python bindings are available for simplnx. To install them, please use an Anaconda virtual environment like the following:
0 commit comments