首页 > 解决方案 > Eigen cmake 需要“target_link_libraries”,即使它只是模板

问题描述

在 Eigen 库的官方 cmake 文档中,它需要target_link_libraries (example Eigen3::Eigen). 我曾尝试删除该行,但随后编译将失败并显示“未找到特征”。

这直接与另一个 StackOverflow 问题中的讨论相矛盾:Using Eigen Lib in my Cmake project?

我不明白为什么 Eigen 需要target_link_libraries,即使它是一个仅限模板的库?就像上面的 StackOverflow 问题一样,我假设我只需要包含 Eigen 标头 ( include_directories()),它应该可以开箱即用。它没有。

标签: cmakeeigen

解决方案


啊,现在我知道发生了什么:CMake 中有一个名为“接口库”的概念,它实际上并没有构建库二进制文件。它专为 Eigen 等纯模板库而设计。

参考: - https://cmake.org/cmake/help/latest/command/add_library.html#interface-libraries - http://mariobadr.com/creating-a-header-only-library-with-cmake.html

希望这可以帮助其他在 cmake 中苦苦挣扎的人!


推荐阅读