CMake:find_file()不会递归搜索

时间:2018-10-07 14:11:44

标签: cmake arduino toolchain

我正在尝试使用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似乎正在为他人服务,所以我想必须在不改变此类路径的情况下解决此问题。

1 个答案:

答案 0 :(得分:0)

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

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

file(GLOB_RECURSE ${PLATFORM}_BOARDS_PATH boards.txt)