【发布时间】:2015-05-08 17:01:31
【问题描述】:
如果您在 cmake 中使用命令target_link_libraries,链接器将在链接时搜索名称符合某些条件的库。例如:
使用以下命令:
target_link_libraries(some_target some_lib)
在 Linux 中,链接器将搜索:libsome_lib.so,而在 Windows 中,链接器将搜索 some_lib.lib(在 Windows 中,我正在编译生成的 VS 项目来自 cmake 项目)。
由于我的应用程序的部署要求,这些库没有扩展名,并且必须在两个操作系统中调用相同的名称(例如 some_lib)。
我如何告诉 cmake 搜索这样的库?
我想输入完整路径就可以了,但是,还有 另一种 什么方法可以做到这一点?
编辑:指定库的完整路径不起作用。
【问题讨论】:
-
重点是你不应该再链接库名,如果是外部库,你应该传递
find_package的输出,如果它是在当前构建的,则传递目标名称项目,或者如果您使用 cmake > 3.0,则只需编写namespace::lib(这也将添加包含路径和定义)。您确定find_packageet similia 不适用于您的情况吗? -
@sbabbi 我正在阅读有关
find_package的信息,看来我必须编写自定义的“包查找器”才能找到我的库。这比我想做的要多,但直到现在它似乎是唯一可行的解决方案。