我的问题:我有一个我希望以二进制形式分发的图书馆项目。我希望我的客户能够尽可能舒适地将这个库与他们的项目集成。此外,我更愿意,如果他们不必处理复杂的安装过程。我假设他们能够在初学者级别使用CMake(这意味着添加标题和源文件,find_package()
和add_executable()
)。
在最好的情况下,我想我的包的工作流程看起来像这样:
make
,make install
!find_package()
有效。在Windows 7和最新的Ubuntu中应该是这样的。
对我来说,过去2天我一直在学习CMake,我发现文档非常难以理解(我从来没有遇到像Qt,qtcreator,sdl,脉冲音频,git,OpenGL这样的问题。 ,...)这就是我要问的原因。
解决:
使用cmake的包装系统。
注意:
*Targets.cmake
文件作为构建树)并且认为它不能用于我的目的。相关问题:
修改
答案 0 :(得分:3)
这将完全允许您描述的用户工作流程。这里的想法是,当您构建项目时,CMake将编写一个配置文件供您随附二进制文件。然后,您的用户可以在他们的CMake项目中加载该配置文件(使用find_package
),并且能够以最少的努力链接到您的二进制文件(通常只需target_link_libraries
调用就可以了。)< / p>
这种方法比传统的find_library
方法更受欢迎,这可能需要在用户方面采取更多步骤来启动和运行。
关于你学习CMake的麻烦:我感到你的痛苦。 CMake本质上不容易学习。最重要的是,网上提供的大量文档都已严重过时。我建议从为即将推出的CMake 3.0版本重组的updated CMake reference manual开始。它仍然需要深入挖掘很多内容,所以不要过快地期待完美的结果,但这是一个很好的起点。