如何在没有安装的情况下分发CMake项目?

时间:2014-05-14 09:11:42

标签: cmake

我的问题:我有一个我希望以二进制形式分发的图书馆项目。我希望我的客户能够尽可能舒适地将这个库与他们的项目集成。此外,我更愿意,如果他们不必处理复杂的安装过程。我假设他们能够在初学者级别使用CMake(这意味着添加标题和源文件,find_package()add_executable())。

在最好的情况下,我想我的包的工作流程看起来像这样:

  • 仅下载包含标题和二进制文件的包。没有来源,没有CMake,makemake install
  • 提取包裹。
  • 将内容移至其他包所在的特殊目录。 (这个目录可以是环境变量或类似的东西。)
  • find_package()有效。

在Windows 7和最新的Ubuntu中应该是这样的。

对我来说,过去2天我一直在学习CMake,我发现文档非常难以理解(我从来没有遇到像Qt,qtcreator,sdl,脉冲音频,git,OpenGL这样的问题。 ,...)这就是我要问的原因。

解决:

使用cmake的包装系统。

注意:

  • 当然我在询问之前找到了这个解决方案,但是我在安装树中发现了一个错误(使用*Targets.cmake文件作为构建树)并且认为它不能用于我的目的。
  • 我使用了套装系统并且效果不佳,请参阅相关问题。

相关问题:

修改

  • 更改了“find_library”对“find_package”的引用,因为我在写作过程中误解了这两个。
  • 添加了解决方案和相关问题部分。

1 个答案:

答案 0 :(得分:3)

看看CMake packages

这将完全允许您描述的用户工作流程。这里的想法是,当您构建项目时,CMake将编写一个配置文件供您随附二进制文件。然后,您的用户可以在他们的CMake项目中加载该配置文件(使用find_package),并且能够以最少的努力链接到您的二进制文件(通常只需target_link_libraries调用就可以了。)< / p>

这种方法比传统的find_library方法更受欢迎,这可能需要在用户方面采取更多步骤来启动和运行。

关于你学习CMake的麻烦:我感到你的痛苦。 CMake本质上不容易学习。最重要的是,网上提供的大量文档都已严重过时。我建议从为即将推出的CMake 3.0版本重组的updated CMake reference manual开始。它仍然需要深入挖掘很多内容,所以不要过快地期待完美的结果,但这是一个很好的起点。