将第三方Libs添加到我的CMAKE项目中
Adding third-party libs to my CMake Project
我似乎无法将我的头缠绕在某些思想上,希望你们能帮助我更清楚地看到事情。据我了解,Find_package命令应该是将第三方依赖性导入我的项目中的所有必要的内容。
-
在我的项目层次结构的root cmakelists.txt中始终使用这些命令,该命令具有多个子文件夹,并添加了add_subDirectory。((?还是我应该在实际需要的子目录中使用find_package?
-
我没有得到find.cmake和config.cmake文件之间的区别。我相信config.cmake文件是图书馆作者正确导出lib的目标的结果。如果lib不提供cmake-sup-pupport,则cmake文件就像辅助措施一样,即不支持客户使用cmake。但是Cmake本身可能会提供合适的查找。要适当采用的CMAKE文件。正确的?那么,我什么时候必须安装和导出我的lib?
感谢您的帮助
编辑:
感谢您的Hep Thomas。作为具体的示例,我想将libqglviewer作为第三方库中的项目中。但是,Ubuntu下的包装管理器16.04仅提供取决于QT4的较旧版本。尽管如此,我的项目仍使用QT5,因此我想,我只下载了LIB并将其从源到/OPT构建,没有汗水。libqglviewer使用QMAKE,因此我转向Google并找到了一个findqglviewer.cmake文件。我将此文件复制到/USR/share/cmake-3.5/modules,据我所知,这应该渲染命令find_package(QGLViewer)
以成功完成变量${QGLViewer_LIBRARIES}
等。但是,它行不通,我无法弄清楚问题是什么,这可能是由于对这些事项的普遍缺乏理解
CMake Warning at /usr/share/cmake 3.5/Modules/FindQGLViewer.cmake:108 (MESSAGE):
Could not find libQGLViewer.so, failed to build?
Call Stack (most recent call first):
CMakeLists.txt:57 (_find_package)
CMakeLists.txt:109 (find_package)
1。这取决于您的项目结构。如果您在添加任何子折叠器之前调用find_package()
,则将确保包含所有子折叠器的软件包。如果您在一个子文件夹中调用find_package()
,则该软件包仅在事实之后可用。
如果有可能有多个子文件夹取决于包裹,并且这些子折叠者中的至少一个始终是构建的一部分(即不是可选的(,那么要做的谨慎的事情就是在添加子文件夹之前,请在顶级调用find_package()
,以确保其可用性向所有可能需要它的子折叠者提供,而无需考虑添加子折线的顺序。
2。您的理解在很大程度上是正确的。这是官方解释。是的,Cmake用许多Find
-Modules船舶用于普通库,但是即使在普通库中,该列表也远远没有详尽。
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Visual Studio 中的 CMake 项目:如何添加其他包含和库目录?
- 尝试将 boost::stacktrace 添加到 CMake 项目时出现构建错误
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 智能感知不适用于Visual Studio 2017中的cmake项目
- 如何在同一个 CMAKE 项目中强制链接到共享库?
- 如何将外部依赖引入跨平台CMake项目?
- 如何将 OpenMP 和 MPI 导入到大型 CLion CMake 项目中?
- 将目录添加到没有 CMakeLists.txt 的 CMake 项目
- 在现代 CMake 项目中存档静态依赖项
- 将 curlpp 添加到 cmake 项目
- 如何使我的 cmake 项目所需的某些 c++ 功能
- 如何将C++17 stdc++fs库链接到混合语言(C++和Fortran)CMake项目
- 简单的cmake项目,在Windows上使用nmake构建没有调试符号
- 如何将opencv_contrib添加到 CMake 项目?
- CMake 项目链接静态库
- 如何将图像文件夹添加到CMake项目以便在c ++可执行文件中使用这些图像?
- Catch2 单元测试未与 CMake 项目一起运行
- 如何将任何DLL链接到Cmake项目
- CLion 导入具有依赖项的现有 cmake 项目