CMake fixup_bundle用于多个可执行文件

时间:2014-11-20 08:31:44

标签: c++ cmake

我正在运行一个具有以下结构的项目:

root/
---Applications/
   ---Application1/
   ---Application2/
---Modules/
   ---Library1/
   ---Library2/

到目前为止,所有的项目创建和链接在Windows和Linux机器上运行良好,使用依赖Qt5和OpenCV。 应将所有生成的文件复制到最终安装路径中:

INSTALL_DIR/
---bin/         #(for runtime)
---include/     #(for .h files)
---lib/         #(for lib files)

当我想创建可再发行的捆绑包时,问题就开始了。 我设法为每个应用程序创建一个脚本:

include("${CMAKE_ROOT}/Modules/BundleUtilities.cmake")     
fixup_bundle("@APPLICATION_PATH@" "@LIB_DEPS@" "@LIB_LOCS@")

以这种方式,不幸的是,fixup_bundle被调用的次数与我的应用程序的数量一样多,并且需要很长时间,尤其是在Windows下。

如何创建一个唯一的安装脚本,只执行一次 fixup_bundle?

提前致谢

1 个答案:

答案 0 :(得分:1)

我现在看到了问题。

看起来像这个问题has been discussed on the CMake mailing list

OP在那里概述了这种被认为是合理的方法。

  
      
  1. 在/ Library / Application Support中安装所有常见的3rdparty库依赖项。
  2.   
  3. 为两个应用程序安装小包装脚本,将DYLD_LIBRARY_PATH设置为指向安装第三方库的位置,   然后启动应用程序。
  4.   

Kitware CMake wiki描述了一种类似的方法,其中共享库作为OSX框架安装。

http://www.cmake.org/Wiki/CMake:MacOSX_Frameworks

它声明"创建框架才刚刚开始。"但它看起来还有一段时间没有更新。

看起来这根本不是CMake现在开箱即用的东西。

我找到了一个安装OSX Framework的CMakeLists.txt示例。

https://qt.gitorious.org/pyside/cgoncalves-apiextractor/source/d6568bba4798e05635c52ab4bd864dca9f828615:CMakeLists.txt#L176

相关问题