我有find_path
来电,提供PATHS
选项。在CMake 2.8.12中,它返回提供的路径,而在CMake 3.7.2中,它返回${CMAKE_SOURCE_DIR}
(或恰好是该目录的其他一些CMake内容)。
find_path
(第三方)代码段如下所示:
set(ZLIB_SEARCH_PATH "${PATH_ETC}/src")
set(ZLIB_SRC_DIR_NAME "zlib")
set(ZLIB_PATH_INIT "${ZLIB_SEARCH_PATH}/${ZLIB_SRC_DIR_NAME}")
find_path(ZLIB_PATH
NAMES CMakeLists.txt
PATHS "${ZLIB_PATH_INIT}"
DOC "Location of zLib source")
虽然Changed find_library behavior from CMake 2.8 to CMake 3.2提供了添加NO_DEFAULT_PATH
选项的工作提示,但它不是我的解决方案,因为我包括第三方软件,我想要了解变化的根本原因。
请注意,以下所有变量均为空/未设置:
行为改变是什么?有没有办法去调试" find_path
来电?
答案 0 :(得分:1)
遗憾的是没有"调试到" find_path
调用方法除了调试CMake本身外。
搜索顺序绝对不会因目的而改变。我能找到的唯一相关提交是"find_*: Fix search order when the environment duplicates some HINTS"。您可以尝试使用PATHS
关键字替换HINTS
,看看它是否能让事情变得更好。
如果上述调用是您自己的代码,请在知道路径find_path
)时不要使用ZLIB_PATH_INIT
。
如果代码不是您的,您可以随时使用CMAKE_IGNORE_PATH
从搜索列表中删除本地文件:
list(APPEND CMAKE_IGNORE_PATH "${CMAKE_SOURCE_DIR}")