Skip to content
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

Install dependencies on Windows, support >2 configs, and fix rpath #3

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

ethanbb
Copy link

@ethanbb ethanbb commented Jul 22, 2019

This fixes a couple of issues that came up when I was testing on Windows and Linux (including #2 and things discussed in #1):

  • DLLs of dependencies included in a libs folder weren't being installed on Windows. They need to be in the shared folder to be used during runtime. (Not an issue on other platforms since the dependency libraries should be linked from standard search locations.)
  • Setting CONFIGURATION_FOLDER to "Release" or "Debug" prevented building the other 2 configurations into their own directories, which you might want to do if you find them useful and don't want to overwrite the release build. To fix that we can just use $<CONFIG> directly.
  • The rpath value of $$ORIGIN does not work at least on Ubuntu 18.04, where transitive dependencies of an .so are loaded at runtime - changed it to $ORIGIN instead. (This is more of an issue for plugins).

Let me know of any issues/concerns.

@cjthomas-opensource
Copy link

I've confirmed that the TNE Lab's version of CMakeLists.txt for libraries (from "OpenEphysFFTW") and for plugins (from "PhaseCalculator") work when used to build other plugins that depend on custom libraries (the "TTL Conditional Trigger" plugin and "Retro Icons" library that I'm working on for our lab (https://github.com/orgs/att-circ-contrl/repositories).

The Open Ephys v5 templates for library and plugin development do not play nicely in that situation (symbols offered by the library aren't resolved at run-time, so the library might not actually be loaded).

I do not have enough expertise with CMake to determine exactly why this is happening (I spent about a day trying). The only functional difference I found was that the TNE config files result in a library named "libFOO" while the Open Ephys template config files result in a library named "FOO" without the "lib" prefix. The conditional trigger and retro icons plugins have both versions of the config file (selected by symlink) if any of you want to do side-by-side diffs on them (I already did, and couldn't find salient differences with my limited knowledge of CMake).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants