本征cmake即使仅使用模板,也需要“ target_link_libraries”

时间:2018-08-17 01:05:13

标签: cmake eigen

在Eigen库的official cmake doc中,它需要行target_link_libraries (example Eigen3::Eigen)。我曾尝试删除该行,但随后编译将失败,并显示“找不到本征”。

这直接与另一个StackOverflow问题:Using Eigen Lib in my Cmake project?

中的讨论相矛盾。

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

1 个答案:

答案 0 :(得分:3)

现在我知道发生了什么: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的灵魂!