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_*选项来覆盖订单:
Run Code Online (Sandbox Code Playgroud)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)
Run Code Online (Sandbox Code Playgroud)