编译静态库时收集所有头文件

不来梅马特

我正在使用 Cmake 从源代码编译库的静态版本。

源代码的结构如下所示:

src/ 
   module1/
       x.cpp
       x.h
       ... 
   module2/
       y.cpp
       y.h
       ...

等等...

编译库的静态版本并不困难。但是,出于分发目的,我只想分发标头 ( x.h, y.h, ...) 和静态库 ( module1.a, module2.a, ...)。

GCC 或 CMAKE 中是否有一些命令可以自动收集所有标题并将它们放入单独的文件夹中?

我知道我可以手动分离源代码和标头,或者我可以简单地分发所有代码(源代码和标头),但这对于我的特定用例来说是浪费和不可取的。或者,我可以编写一个非常简单的 Python 脚本来执行此操作,但在我看来,这可能是一个非常常见的场景。所以我猜 Gcc 或 Cmake 中有一些东西可以做到这一点。

注意:我不负责维护代码库,所以我对项目的结构没有发言权。如果是,我可以将代码分成srcinclude文件夹。

斯蒂芬纽厄尔

最好的办法是使用 cmake glob 并安装所有工件。

# append to your existing CMakeLists.txt
install(TARGETS module1 module2 #adjust to use your names
        ARCHIVE DESTINATION lib)
file(GLOB_RECURSE header_list "*.h") #adjust if necessary
install(FILES ${header_list}
        DESTINATION include)

请注意,globbing 并不完美,文件列表仅在运行 cmake 时更新(即,它不会自行检测添加或删除的文件)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有得到某文件进行编译静态库C ++(Linux内核)

在编译时收集所有静态C字符串的地址

启动静态服务时,如何检查属性文件中提到的数据库用户是否已授予对架构中定义的所有表的访问权限

包括静态库中的头文件

将头文件包含到静态库中

编译OCaml时不要链接所有标准库模块

Cmake链接共享库:当包含库中的头文件时,“没有这样的文件或目录”

更改头文件时,如何使Makefile重新编译?

使用静态库(.a)中的头文件(.h)

在编译时在头文件中计算常量

编译-链接.cpp和头文件时出错

从静态库创建共享库时,请保留所有导出的符号

在CMake中编译静态C库时未生成中间.obj文件

使用cmake生成静态库时如何具有中间编译语句

将头文件从iOS静态库导入到watchOS静态库?

编译二进制文件时,Android会重建静态库

C ++是否包括所有包含在头文件中的头文件?

使用编译时不可用的头文件

从Objective-C头文件包含C ++头文件时,它具有编译错误,未找到iostream

在编译时插入头文件

使用 G++ 编译带有头文件和静态库的程序时,确定缺少依赖项的最佳方法是什么?

c++ 模板特征——编译时不包含头文件

gcc 的当前目录默认静态库、动态库和头文件搜索路径吗?

头文件的静态类成员

删除收集的静态文件

是否有将静态库转换为 C 头文件的实用程序?

为什么在包含标准库中的头文件时不需要向编译器传递相应的源文件?

cmake:将只有头文件的库编译成静态库

是否有包含标准库中所有方法描述符的 Java 类库“头文件”?