强制cmake FIND_LIBRARY查看自定义目录

ant*_*009 16 cmake

cmake版本2.8.4

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

我的项目目录,我的apr库是:

gw_proj/tools/apr/libs
Run Code Online (Sandbox Code Playgroud)

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

FIND_LIBRARY(APRUTIL NAMES "aprutil-1"
  PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs)
Run Code Online (Sandbox Code Playgroud)

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

/usr/lib
Run Code Online (Sandbox Code Playgroud)

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

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

gw_proj/tools/apr/libs
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议

Fra*_*ser 14

您可以指定使用一个或多个的搜索顺序NO_DEFAULT_PATH,NO_CMAKE_ENVIRONMENT_PATH ,NO_CMAKE_PATH,NO_SYSTEM_ENVIRONMENT_PATH,NO_CMAKE_SYSTEM_PATH,CMAKE_FIND_ROOT_PATH_BOTH,ONLY_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)
Run Code Online (Sandbox Code Playgroud)

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

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

FIND_LIBRARY(APRUTIL NAMES "aprutil-1"
  PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs NO_DEFAULT_PATH)
Run Code Online (Sandbox Code Playgroud)