21

cmake 版本 2.8.4

我有以下我自己编译并希望我的应用程序链接的 apache 可移植运行时库。

我的 apr 库所在的项目目录:

gw_proj/tools/apr/libs

在我的 CMakeLists.txt 我有以下内容:

FIND_LIBRARY(APRUTIL NAMES "aprutil-1"
  PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs)

我的问题是在已经安装了 apache 便携式运行时的机器上,它将在此文件夹中查找它:

/usr/lib

所以总是会忽略我的自定义路径。

如何强制FIND_LIBRARY始终查看我的自定义目录:

gw_proj/tools/apr/libs

非常感谢您的任何建议

4

1 回答 1

17

NO_DEFAULT_PATH您可以使用、NO_CMAKE_ENVIRONMENT_PATHNO_CMAKE_PATHNO_SYSTEM_ENVIRONMENT_PATHNO_CMAKE_SYSTEM_PATHCMAKE_FIND_ROOT_PATH_BOTHONLY_CMAKE_FIND_ROOT_PATH或中的一个或多个来指定搜索顺序NO_CMAKE_FIND_ROOT_PATH

从文档中find_library

默认搜索顺序旨在针对常见用例从最具体到最不具体。项目可以通过简单地多次调用命令并使用 NO_* 选项来覆盖顺序:

find_library(<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
find_library(<VAR> NAMES name)

一旦其中一个调用成功,结果变量将被设置并存储在缓存中,这样就不会再次搜索调用。

所以在你的情况下,你可以做

FIND_LIBRARY(APRUTIL NAMES "aprutil-1"
  PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs NO_DEFAULT_PATH)
于 2013-04-02T20:10:27.003 回答