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

问题描述 投票:0回答:1

我使用cmake从源代码编译库中的静态版本。

源代码有看起来像这样的结构:

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

等等...

编译库的静态版本并不困难。然而,对于分布的目的,我只是要分发的标题(x.h, y.h, ...)和静态库(module1.a, module2.a, ...)。

是否有GCC或CMake的一些命令来自动收集所有的头,并把它们放在一个单独的文件夹?

我知道我可以手动分离源和头,或者我可以简单地分配所有的代码(源和标题)的,但是这是一种浪费和不希望的我的特定用例。或者,我可以写一个非常简单的Python脚本做到这一点,但在我看来,这可能是一个很常见的场景。所以我猜想,有一些海合会或CMake的做到这一点。

注:我不是负责维护代码库的,所以我在这个项目是如何构成的没有发言权。如果我是,我可以分离的代码放到srcinclude文件夹。

c++ gcc cmake
1个回答
1
投票

做的最好的事情是有cmake的水珠,并安装所有的文物。

# 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)

注意通配符是不完美的,当cmake的运行(自有即,它不会检测到添加或删除文件)只更新文件列表。

© www.soinside.com 2019 - 2024. All rights reserved.