我使用cmake构建一个跨平台库,我的大多数项目都依赖于它。目录结构如下:如何使用共享库cmake处理标题
/
--headers
--include
--src
--src_win
--src_linux
“include”目录中的头文件基本上包含“headers”目录中的其他头文件。因此,他们看起来比如像:现在
#include "../headers/header1.h"
#include "../headers/header2.h"
#include "../headers/header3.h"
,以便使用从其他项目这个图书馆,我安装“包括”目录库中的文件。像这样:
install(FILES include/mylib1.h DESTINATION include)
install(TARGETS mylib DESTINATION lib)
很显然,在另一个项目中,我会#include subincludes不会找到标题。 我该如何正确处理这个问题?我的意思是我必须将“标题”目录中的所有文件复制到“/ usr/local/headers”,这并不是一个聪明的主意。我该如何处理? “安装”实际上是一个好主意吗? cmake可以记住库的位置(在我的home文件夹中的git仓库克隆中)? 通过我是从窗户进来的方式打造世界并习惯到Visual Studio
非常感谢您的帮助
我觉得创建“标题”目录根本不好。 –
关键是,根据我正在使用的操作系统,我具有某些功能的不同实现。这就是为什么我想分开标题的原因 – acensored
'我根据操作系统有不同的特定功能的实现' - 标头文件通常包含**声明**,而不是*实现*(*定义*)。在任何情况下,您都应该**安装可以直接或间接包含的所有内容**。 'cmake可以记住图书馆所处的位置 - 安装文件是**断开连接**,无论是源文件还是构建文件,还是来自CMake。这是常见的做法。 – Tsyvarev