Check you have conan >= 2
, and add the nrel-v2
remote to grab ruby
and swig/4.1.1
.
conan --version
conan remote add -f nrel-v2 http://conan.openstudio.net/artifactory/api/conan/conan-v2
conan install . --output-folder=../OS-build-release --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release
You can also do another configuration, such as Debug
, RelWithDeb
, etc
conan install . --output-folder=../OS-build --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Debug
You'll have the conan-release
and conan-debug
CMake Presets in the root folder. Do cmake --list-presets
to list the available presets (which are in CMakeUserPresets.json
)
Side note: If you want a specific configure option (such as a build folder in Release mode where you build with -DBUILD_CSHARP_BINDINGS:BOOL=ON
) in a different build dir for the same source dir, you probably will need to go and edit the <build_dir>/CMakePresets.json
to rename it to another configuration name so it does not clash with the preset conan-release
The recommend flow is to use CMake Presets.
If you notice the messages printed to the console when you run the conan install
command from above,
you'll see that the conanfile
actually defines common build variables for you already,
such as defining which CPack
Generators to use depending on your target platform, trying to infer the Python_ROOT_DIR
etc
conanfile.py: Calling generate() conanfile.py: Generators folder: /path/to/OS-build-release conanfile.py: Setting PYTHON_VERSION and Python_ROOT_DIR from your current python: 3.8.13, '/home/julien/.pyenv/versions/3.8.13' conanfile.py: CMakeToolchain generated: conan_toolchain.cmake conanfile.py: Preset 'conan-release' added to CMakePresets.json. Invoke it manually using 'cmake --preset conan-release' if using CMake>=3.23 conanfile.py: If your CMake version is not compatible with CMakePresets (<3.23) call cmake like: cmake <path> -G Ninja -DCMAKE_TOOLCHAIN_FILE=/path/to/OS-build-release/conan_toolchain.cmake \ -DBUILD_CLI=ON -DBUILD_RUBY_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=ON \ -DBUILD_PYTHON_PIP_PACKAGE=OFF -DBUILD_TESTING=ON -DBUILD_BENCHMARK=ON \ -DCPACK_BINARY_TGZ=ON -DCPACK_BINARY_IFW=OFF -DCPACK_BINARY_DEB=ON -DCPACK_BINARY_NSIS=OFF \ -DCPACK_BINARY_RPM=OFF -DCPACK_BINARY_STGZ=OFF -DCPACK_BINARY_TBZ2=OFF \ -DCPACK_BINARY_TXZ=OFF -DCPACK_BINARY_TZ=OFF \ -DPYTHON_VERSION=3.8.13 -DPython_ROOT_DIR=/home/julien/.pyenv/versions/3.8.13 \ -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Release conanfile.py: CMakeToolchain generated: CMakePresets.json conanfile.py: CMakeToolchain generated: ../OpenStudio/CMakeUserPresets.json conanfile.py: Generating aggregated env files conanfile.py: Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh'] Install finished successfully
Note that this is also supported by Visual Studio (MSVC).
Run these commands from the source directory (OpenStudio/
).
cmake --preset conan-release [any_futher_configuration_options]
Example:
cmake --preset conan-release \
-DBUILD_PYTHON_BINDINGS:BOOL=ON -DBUILD_PYTHON_PIP_PACKAGE:BOOL=ON \
-DPYTHON_VERSION=3.8.13 -DPython_ROOT_DIR:PATH=$HOME/.pyenv/versions/3.8.13/ \
-DBUILD_CSHARP_BINDINGS:BOOL=ON
Building
cmake --build --preset conan-release
First, go to the build directory, and activate the conan build environment.
cd ../OS-build-release
# Unix
. ./conanbuild.sh
# Windows
call conanbuild.bat
Still in the build directory, run cmake, but do pass the CMAKE_TOOLCHAIN_FILE
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE:STRING=Release \
-DBUILD_TESTING:BOOL=ON -DCPACK_BINARY_TGZ:BOOL=ON -DCPACK_BINARY_DEB:BOOL=ON \
-DCPACK_BINARY_IFW:BOOL=OFF -DCPACK_BINARY_NSIS:BOOL=OFF -DCPACK_BINARY_RPM:BOOL=OFF -DCPACK_BINARY_STGZ:BOOL=OFF \
-DCPACK_BINARY_TBZ2:BOOL=OFF -DCPACK_BINARY_TXZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF \
-DBUILD_PYTHON_BINDINGS:BOOL=ON -DBUILD_PYTHON_PIP_PACKAGE:BOOL=ON \
-DPYTHON_VERSION=3.8.13 -DPython_ROOT_DIR:PATH=/home/julien/.pyenv/versions/3.8.13/ \
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
../OpenStudio
You can deactivate now if you want
# Unix
. ./deactivate_conanbuild.sh
# Windows
call deactivate_conanbuild.bat
git clone git@github.com/NREL/OpenStudio.git
cd OpenStudio
conan install . --output-folder=../OS-build-release --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release
cmake --preset conan-release
cmake --build --preset conan-release
If you want to update a dependency in the conan.lock
, just delete the line, and use this:
conan install . --output-folder=../OS-build-release --build=missing \
-c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release \
--lockfile-partial --lockfile-out=conan.lock