CMake:find_file()不会递归搜索

问题描述 投票:3回答:1

我正在尝试使用arduino-cmake框架,但是我的Arduino-SDK无法正确识别。搜索原因,发现以下内容:

        find_file(${PLATFORM}_BOARDS_PATH
            NAMES boards.txt
            PATHS ${PLATFORM_PATH}
            DOC "Path to Arduino boards definition file.")

[${PLATFORM}_BOARDS_PATH扩展为ARDUINO_BOARDS_PATH-NOTFOUNDPLATFORM_PATH正确指向/opt/local/arduino-1.8.7/hardware/arduino,在里面可以找到avr/boards.txt

所以一切似乎都很好,对吧?

PATHS命令中的find_file()更改为${PLATFORM_PATH}/avr可获得正确的结果-因此find_file似乎没有递归搜索。

我做错了什么? arduino-cmake似乎正在为他人服务,因此我想必须在不更改此类路径的情况下解决此问题。

cmake arduino toolchain
1个回答
0
投票

正如@Tsyvarev指出的,find_file()find_path()不会递归搜索。在许多情况下,可以用file(GLOB_RECURSE ...)命令代替这些命令(请参阅here的详细信息)。

在您的示例中,您可以编写如下内容:

file(GLOB_RECURSE ${PLATFORM}_BOARDS_PATH boards.txt)
© www.soinside.com 2019 - 2024. All rights reserved.