我正在尝试使用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-NOTFOUND
。PLATFORM_PATH
正确指向/opt/local/arduino-1.8.7/hardware/arduino
,在里面可以找到avr/boards.txt
。
所以一切似乎都很好,对吧?
将PATHS
命令中的find_file()
更改为${PLATFORM_PATH}/avr
可获得正确的结果-因此find_file
似乎没有递归搜索。
我做错了什么? arduino-cmake
似乎正在为他人服务,因此我想必须在不更改此类路径的情况下解决此问题。
正如@Tsyvarev指出的,find_file()
和find_path()
不会递归搜索。在许多情况下,可以用file(GLOB_RECURSE ...)
命令代替这些命令(请参阅here的详细信息)。
在您的示例中,您可以编写如下内容:
file(GLOB_RECURSE ${PLATFORM}_BOARDS_PATH boards.txt)