0

我目前在 \usr\local 中安装了一个开源的第 3 方库 A。现在我想在这个库上试验一些代码更改,但我想在本地文件夹中进行这个测试,这样它就不会影响系统库。让我们将本地构建称为 A'。

我有一个可执行文件 B,它使用库 A 作为静态库。在 CMakelists.txt 中,它使用 find_pacakge(A) 来查找安装在 \usr\local 中的那个。使它链接到本地​​文件夹中的 A' 的最简单方法是什么?

我想如果我将 A' 安装到本地文件夹(或任何不同于 usr\local 的文件夹),我们可以强制 CMAKE 使用 HINTS 在该文件夹中查找包。但是,我希望有更好的方法,甚至无需安装。毕竟,A 和 A' 使用相同的头文件,只是位于不同的位置。所以我认为 include_directories 不需要更改。但我不知道如何将库链接到指定文件夹中的指定文件,而不是从 find_package 找到的默认系统文件夹。

真的是Cmake的新手,我希望我说清楚了。非常感谢

4

1 回答 1

0

1)通常你把所有的东西都拿走,即不包括在这里和那里的lib,在现代CMake中你也可以使用target_include_directory(),所以包括和库是“耦合”在一起的,即你只需一个find_package()电话就可以得到所有东西。
参考: https ://cmake.org/cmake/help/latest/command/target_include_directories.html

2)看看CMAKE_PREFIX_PATH这是修改默认搜索路径的正确方法,如果你想找到A'而不是A>
cf:https ://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html

3) 如果你想使用 A' 的构建目录,那么 CMake 项目 A' 必须使用“export()”,这样你就可以直接从 buildir 使用它。
注意:很少有项目支持它,正确的方法是先安装(在本地文件夹中)然后使用它。
参考:https ://cmake.org/cmake/help/latest/command/export.html

于 2018-09-20T06:27:04.697 回答