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-v2conan install . --output-folder=../OSApp-build-release --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=ReleaseYou can also do another configuration, such as Debug, RelWithDeb, etc
conan install . --output-folder=../OSApp-build --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=DebugYou'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/OSApp-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/OSApp-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 \
-DQT_INSTALL_DIR:PATH=/opt/Qt/6.6.3/gcc_64 \
-DBUILD_PACKAGE:BOOL=ON
Building
cmake --build --preset conan-release
First, go to the build directory, and activate the conan build environment.
cd ../OSApp-build-release
# Unix
. ./conanbuild.sh
# Windows
call conanbuild.batStill 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 \
-DQT_INSTALL_DIR:PATH=/opt/Qt/6.6.3/gcc_64 \
-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 \
-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=../OSApp-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=../OSApp-build-release --build=missing \
-c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release \
--lockfile-partial --lockfile-out=conan.lock