我一直在尝试使用CMakeLists构建我的项目几天,并取得了一些成功,但我不确定我正在做什么。
我目前正在使用5个外部库。 (Assimp,glew,glfw,glm,DevIL) 我的主要平台是Windows,但平台独立性是一个很大的优势。
所以我的问题是当我想在项目中包含一个外部库时如何继续?
到目前为止,我认为这是我所知道的。
(1)如果你是"幸运"你可以使用find_library并将它链接到你很适合的target_link_libraries。
(2)由于glm是一个仅头文件库,我只需要一个include_directories。
(3)如果外部库有自己的CMakeLists,则执行add_subdirectory并将include_directories设置为头文件所在的位置。
这就是我所知道的,我不明白。
(4)如果外部库有.h文件和.cpp文件但没有CMakeLists。如何包含(并构建?)此库?
(5)(这对我来说是最重要的问题!)如果外部库有.h文件和.lib或.dll文件,我该如何包含这个库?在这两种情况下! (LIB / DLL)
提前感谢所有回复!
祝你好运 埃德温
答案 0 :(得分:2)
如果你想快速而肮脏的方式,你可以
CMakeLists.txt
中(相对于super-repo root)如果依赖项没有CMakeLists.txt
或任何其他适合您系统的构建脚本,则需要查找或编写一个。
find_package
命令列表,并使用target_link_libraries
命令列出您的依赖项,配置模块将详细说明所有其他详细信息。一般情况下,您不需要将第三方项目直接包含在主项目CMakeLists
(add_subdirectory
或ExternalProject_add
)中,因为您不会工作在他们身上所以他们不会改变。不需要将IDE工作区与它们混为一谈。在配置主项目之前,最好使用单独的脚本下载/克隆/构建/安装它们。