CMAKE工程编译好后自动把可执行文件传输到远程开发板
# 设置 CMake 最低版本要求
cmake_minimum_required(VERSION 3.10)
# 设置项目名称
project(MyProject)
# 添加可执行文件,这里以项目名作为可执行文件的名称
add_executable(${PROJECT_NAME} main.cpp)
# 设置开发板信息
set(DEVELOPMENT_BOARD_IP "192.168.1.100")
set(DEVELOPMENT_BOARD_USER "root")
set(DEVELOPMENT_BOARD_PASSWORD "password")
set(DEVELOPMENT_BOARD_DEST_DIR "/home/user/apps")
# 添加自定义命令和目标
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND sshpass -p ${DEVELOPMENT_BOARD_PASSWORD} scp $<TARGET_FILE:${PROJECT_NAME}> ${DEVELOPMENT_BOARD_USER}@${DEVELOPMENT_BOARD_IP}:${DEVELOPMENT_BOARD_DEST_DIR}
COMMENT "Pushing ${PROJECT_NAME} to development board..."
)
代码解释
项目名称设置:
project(MyProject) 定义了项目名称为 MyProject,后续使用 ${PROJECT_NAME} 变量来引用这个项目名称。
添加可执行文件:
add_executable(${PROJECT_NAME} main.cpp) 使用项目名称作为可执行文件的名称,这里假设源文件是 main.cpp,你可以根据实际情况修改。
开发板信息设置:
同样设置了开发板的 IP 地址、用户名、密码和目标存放目录,这些信息会用于后续的文件传输。
自定义命令:
add_custom_command 用于在 target(即 ${PROJECT_NAME})编译完成后执行自定义命令。
POST_BUILD 表明该命令在编译结束后执行。
COMMAND 中使用 sshpass 和 scp 命令将编译生成的可执行文件($<TARGET_FILE:${PROJECT_NAME}>)推送到开发板指定的目录。
COMMENT 用于在执行自定义命令时显示提示信息,告知正在将项目的可执行文件推送到开发板。
注意事项
sshpass 工具:和之前一样,要确保系统中安装了 sshpass 工具,在 Ubuntu 系统中可以使用 sudo apt-get install sshpass 进行安装。
安全问题:明文存储密码存在安全风险,建议使用更安全的方式,如环境变量来存储密码。
网络连接:要保证本地机器和开发板之间网络连接正常,且开发板的 SSH 服务处于开启状态。
如果你还有多个 target 需要推送到开发板,可以按照同样的方式为每个 target 添加 add_custom_command 命令。