东郭欣然 发表于 2025-6-4 19:37:35

CMake构建学习笔记9-Eigen库的构建

Eigen是一个高性能的C++线性代数库,广泛用于科学计算、机器学习、计算机视觉等领域。不过,Eigen有点特别,它是一个纯头文件实现的库;也就是说,任何一个程序要引入它,只要include它的头文件就可以了。这天然就规避了不同操作系统不同编译器造成的二进制兼容的问题,所有的实现都include源代码了,那还不是轻松跨平台?
像Eigen这种风格的库就被称为Header Only库。这种库使用起来确实太方便了,所以现在很多库都采取了这种设计。我们知道C/C++的声明和实现是分开的,所以使用起来相当的麻烦,相同的函数签名总是要写两次,然后把实现隐藏起来编译成静态库或者动态库。这种风格的库就完全不会有这个问题,include头文件就行。不过这种风格也不是没有缺点,比如增加了调用方的构建时间、构建成果体积增加、符号冲突、不能隐藏实现等,所以采用这种风格的库一般都是模板库。
Header Only库也并不意味着不需要构建,因为构建还是包含很多步骤的,使用CMake进行构建的关键指令如下:
# 配置CMake
cmake .. -G "$Generator" -A x64 `
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
-DCMAKE_PREFIX_PATH="$InstallDir" `
-DCMAKE_INSTALL_PREFIX="$InstallDir" `
-DBUILD_TESTING=OFF

# 构建阶段,指定构建类型
cmake --build . --config RelWithDebInfo

# 安装阶段,指定构建类型和安装目标
cmake --build . --config RelWithDebInfo --target install如果设置不构建测试程序,这个构建过程其实就是复制必须的头文件到安装目录。另外,还会生成一些.cmake格式的包配置文件到安装目录,这些文件是便于其他项目找到和使用这些Eigen的。不止Eigen,大多数CMake构建的库都会生成类似的包配置文件,这一点我们放在后续的文章中进行一步论述。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

拼潦 发表于 2025-12-5 13:22:17

东西不错很实用谢谢分享

后仲舒 发表于 2025-12-9 02:56:56

感谢分享,学习下。

祖柔惠 发表于 2026-1-10 18:09:14

用心讨论,共获提升!

能氐吨 发表于 2026-1-12 18:19:43

感谢发布原创作品,程序园因你更精彩

明思义 发表于 2026-1-14 02:20:40

感谢,下载保存了

洫伍俟 发表于 2026-1-16 12:46:07

不错,里面软件多更新就更好了

劳暄美 发表于 2026-1-20 11:54:31

不错,里面软件多更新就更好了

薯羞 发表于 2026-1-21 03:43:08

谢谢分享,辛苦了

劳暄美 发表于 2026-1-22 18:39:19

感谢,下载保存了

峰邑 发表于 2026-1-25 08:03:09

用心讨论,共获提升!

崔竹 发表于 2026-1-26 10:55:03

喜欢鼓捣这些软件,现在用得少,谢谢分享!

氛疵 发表于 2026-1-30 05:15:06

热心回复!

戟铵腴 发表于 2026-2-1 16:46:59

感谢分享

吕颐然 发表于 2026-2-3 06:11:32

前排留名,哈哈哈

砂歹汤 发表于 2026-2-6 09:46:45

感谢分享,下载保存了,貌似很强大

蓬庄静 发表于 2026-2-7 03:32:29

感谢,下载保存了

况雪柳 发表于 2026-2-7 11:51:17

这个好,看起来很实用

乐敬 发表于 2026-2-8 02:31:09

前排留名,哈哈哈

懵径 发表于 2026-2-8 03:39:03

感谢,下载保存了
页: [1] 2
查看完整版本: CMake构建学习笔记9-Eigen库的构建