我一直在用GoogleTest构建项目。当我通过FetchContent获取GoogleTest时,一切都很好,但当我使用系统版本时,我会遇到链接器错误。
我在/home/alecto/.local/cmake-packages/
有一个CMake包的用户级目录,CMAKE_PREFIX_PATH
设置为该目录。我在这个目录中安装了GoogleTest,但CMake仍然更喜欢该包的系统版本,尽管CMake发现其他包安装在cmake-packages
目录中(如Catch2(。
我如何指示CMake更喜欢安装在/home/alecto/.local/cmake-packages
中的GoogleTest版本?
根据文档:
ref:https://cmake.org/cmake/help/latest/command/find_package.html
- 3.12版新增:搜索
<PackageName>_ROOT
CMake变量和<PackageName>_ROOT
环境变量中指定的路径,其中<PackageName>
是要查找的包。包根变量作为堆栈进行维护,因此如果从查找模块中调用,则在当前包的路径之后还会搜索父查找模块的根路径。如果通过了NO_PACKAGE_ROOT_PATH
或将CMAKE_FIND_USE_PACKAGE_ROOT_PATH
设置为FALSE
,则可以跳过此操作。请参阅政策CMP0074
- 搜索cmake特定环境变量中指定的路径。这些是在用户的shell配置中设置的,因此使用主机的本机路径分隔符(在Windows上为
;
,在UNIX上为:
(。如果传递了NO_CMAKE_ENVIRONMENT_PATH
或将CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
设置为FALSE
:
°<PackageName>_DIR
,则可以跳过此操作
因此尝试设置GTest_ROOT
或GTest_DIR