背景:在板子上修改nuttx\boards\arm\{芯片}\{板子}\include\board.h文件,是不会同步到nuttx\{构建目录}\arch\board\board.h的,原因是nuttx的如下脚本所致,他这里调用的是copy_directory :
function(nuttx_create_symlink old new)
if(IS_DIRECTORY ${old} AND CMAKE_HOST_SYSTEM_NAME MATCHES
"MSYS|CYGWIN|Windows")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${old} ${new})
else()
file(CREATE_LINK ${old} ${new} COPY_ON_ERROR SYMBOLIC)
endif()
endfunction()
原因是因为windows下创建文件目录符号的软连接时需要管理员权限,所以nuttx开发者才用的复制。带来的后果就是只要修改一下board.h 就要手动复制一次 好麻烦,解决方案:
1.将CMAKE.exe设置为管理员权限.

2.修改脚本:
function(nuttx_create_symlink old new)
if(IS_DIRECTORY ${old} AND CMAKE_HOST_SYSTEM_NAME MATCHES
"MSYS|CYGWIN|Windows") # For MSYS, Cygwin, or Windows, copy the directory instead of creating a symlink
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink "${old}" "${new}"
RESULT_VARIABLE result
OUTPUT_VARIABLE out
ERROR_VARIABLE err
)
#execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${old} ${new})
else()
file(CREATE_LINK ${old} ${new} COPY_ON_ERROR SYMBOLIC)
endif()
endfunction()
效果:
