-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fine-grained plugins dependendy upload #32
Conversation
4ae4066
to
9f1f95b
Compare
9f1f95b
to
4f5ad3d
Compare
2370aac
to
ec5f345
Compare
This reverts commit 5c6aac8.
811ad9f
to
6076125
Compare
6076125
to
a5b8a00
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.github/workflows/build.yml:
Regarding the vcpkg logic : I recommend putting this into a reusable action hosted in the ManiVault/github-actions project. Project specific values can be passed as parameters. I approve this but will add a separate PR for creating this reusable action.
conanfile.py:
Does the manivault_dir needs to be set on self. (line 105) It is not used outside the generate function. Can this be changed?
I changed this. It just was that way before but there is no need to bet set to self. |
It is very useful to gather all plugin runtime dependencies in a single folder, immediately after building the plugin.
Here, we gather all runtime dependencies and install them to
${ManiVault_INSTALL_DIR}/$<CONFIGURATION>/PluginDependencies/PLUGINNAME
where the PLUGINNAME is the current plugin's name.Depends on ManiVaultStudio/core#692 which loads the runtime dependencies automatically before loading the plugin library.
A plugin developer can use
mv_install_dependencies
to set up automatic plugin runtime dependency gathering and installation with this commands:Dependencies that are linked to our plugin
${PROJECT_NAME}
and found withfind_package
are automatically resolve (given that their respective cmake export files are nicely setup). This even works with dependency chains, as shown in this example: we link to Faiss, which in turn depends on Lapack and OpenBlas which in turn depends on other libraries.Otherwise, we need to pass all targets that we build in our project but do not set up with
find_package
tomv_install_dependencies
, which in this example is the plugin itself and two dependencies, "hwy" and "hwy_contrib".The
mv_install_dependencies
is automatically available when usingfind_package(ManiVault ... CONFIG)
.All installed dependencies are listed like this (current CI output on windows):
Additionally:
build.yml
andconanfile.py
. This does not replace or remove anything, it only adds functionality.secrets.GH_VCPKG_PACKAGES
conanfile.py
:CMAKE_CXX_STANDARD_REQUIRED
on all platformsCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
on windowsManiVault_DIR
and notMV_INSTALL_DIR
which is automatically set byfind_package(ManiVault ... CONFIG)
and only needs to be manually set when building the core