CMake / CPack: location of third-party libraries in MacOS

454 views Asked by At

We're working on a multi-platform C++ GUI project. We have dependencies on some third-party libraries (e.g. boost, fftw, etc.) and these also get delivered and installed, so there's no need for our users to download extra components.

Right now, for the MacOS build, an app bundle is generated (MyProject.app). We're using the PackageMaker CPack Package Generator. All needed third-party dependencies get instaled under MyProject.app/Contents/Frameworks.

We recently completed a suite of command line tools that we'd like to include in our installer. So we'll be installing our bundle, MyProject.app along a folder, say, Tools, including our new command line utilities.

To make things more interesting, our application bundle is composed of some gui and core components, and we represent each component and our tools as different CMake projects (i.e., we use the following CMake commands: project(gui_components), project(core_components) and project(tools)). Our tools depend on the core components, but not on the gui components.

Basically, what we'd like to have is the following folder structure:

<install folder>
  |
  |--MyProject.app
  |   |
  |   |--<all MacOS bundle needed folders/files>
  |
  |--Tools/
  |   |
  |   |--ToolA
  |   |--ToolB
  | 
  |--lib/
      |
      |--libboost_regex
      |--libfftw
      |--libgui_components
      |--libcore_components

How can I tell CMake / CPack to install third-party dependencies (in this example: libboost_regexand libfftw) in the lib folder? They are still being installed under MyProject.app/Contents/Frameworks. We've already managed to install own libgui_components and libcore_components in the lib folder.

0

There are 0 answers