infinipaint/docs/BUILDING.md
2026-02-06 06:12:24 +00:00

79 lines
3.5 KiB
Markdown

## Building
This program is written in C++, and uses [conan](https://conan.io) to fetch dependencies.
## Linux
After cloning the repository, `cd` into the repo, then run:
```
./conan/export_libs.sh
conan install . --build=missing -pr=conan/profiles/linux-x86_64
cd build/Release
source generators/conanbuild.sh
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
source generators/deactivate_conanbuild.sh
```
After building the project, you should place the `data` folder located in the root of the repository next to the `infinipaint` executable before running it. What I usually do is create a symbolic link of the data folder and place it in the build directory.
You can also build in Debug mode by setting the `build_type` in the `conan install` command to `Debug`, and also by setting `CMAKE_BUILD_TYPE=Debug` when running CMake.
## macOS
After cloning the repository, `cd` into the repo, then run:
```
./conan/export_libs.sh
conan install . --build=missing -pr=conan/profiles/macOS-arm64
cd build/Release
source generators/conanbuild.sh
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
source generators/deactivate_conanbuild.sh
```
This will build an app bundle that contains all the data necessary to run the program. To create a .dmg installer for the app, run:
```
cpack -G DragNDrop
```
## Windows
The windows version of this program is built on Visual Studio 2022's compiler.
After cloning the repository, `cd` into the repo, then update the git submodules to get the `clip` library:
```
git submodule update --init --recursive
```
Then run:
```
.\conan\export_libs.bat
conan install . --build=missing -pr=conan/profiles/win-x86_64
cd build
.\generators\conanbuild.bat
cmake .. -DCMAKE_TOOLCHAIN_FILE="generators\conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
.\generators\deactivate_conanbuild.bat
```
After building the project, you should place the `data` folder located in the root of the repository next to the `infinipaint.exe` executable before running it.
You can create an NSIS installer of the application by running:
```
cpack -G NSIS
```
## Emscripten
You can use Emscripten to build a web version of this program. Keep in mind that this version might be more buggy, and is missing a few features. In addition, I have only tried building it on a Linux machine.
You'll need to setup conan toolchains. You can read about that [here](https://github.com/conan-io/conan-toolchains).
After cloning the repository, `cd` into the repo, then update the git submodules to get `datachannel-wasm`:
```
git submodule update --init --recursive
```
Then run:
```
./conan/export_libs.sh
conan install . --profile:host=conan/profiles/emscripten --profile:build=default --build=missing
cd build/Release
ln -s ../../data data
source generators/conanbuild.sh
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
source generators/deactivate_conanbuild.sh
```
These commands will generate a javascript file containing the entire program. An example of a website that can run and display this program can be found in `emscripteninstall/index.html`. To try this out, place `infinipaint.js`, `emscripteninstall/index.html`, and `emscripteninstall/loading.gif` in a folder, and host a webserver from that folder. The server must set these two HTTP headers:
```
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
```