如何从其他cmake的模块
问题描述:
添加静态库假设我有2个cmake的模块如何从其他cmake的模块
-
MyStaticLib
这是编译后会是一个静态库 -
Connector
这是一个共享库或可执行文件,它应该使用MyStaticLib
里面。
所以,我想补充MyStaticLib
内Connector
,但不能简单地把myStaticLib.a + headers
在某些文件夹,但是从Connector
参考MyStaticLib
模块,所以当Connector
编译将建立从源lib和使用它。
什么是在cmake
中这样做的正确方法?
答
在独立项目的情况下(MyStaticLib用于其他项目,有它自己的发布周期),你可以使用:
- 构建,测试和安装
MyStaticLib
到您的文件系统 - 添加
find_library
到Connector
的CMakeList.txt
- 与之相似以上,但
MyStaticLib
提供更多的信息
- 如果您想通过
Connector
触发使用前任何附加操作(建设,补丁)上
- 给你最多的可能性
MyStaticLib
对于依赖项目(MyStaticLib是子项目Connector
),只需将其作为子目录Connector
(它必须是子目录)即可。
+0
我无法在我的情况下使用find_library和find_package。我认为这个指令已经编译好了,而不是原始代码。 –
+0
似乎ExternalProject或add_subdirectory是解决方案。 –
当连接器编译它时,**将从源**构建lib并使用它。 - 在'Connector'中,您可以使用add_subdirectory()来添加'MyStaticLib'的源目录。或者,您可以使用[ExternalProject_Add](https://cmake.org/cmake/help/v3.7/module/ExternalProject.html)。链接到编译的库取决于您用于构建它的方法。 – Tsyvarev
@Tsyvarev谢谢,具有二进制路径集的'add_subdirectory'正如我所料。如果你将它作为答案,而不是评论,我会很乐意接受它。 –