在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()
),它就可以开箱即用。没有。
答案 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的灵魂!