1、QP/C框架源代码下载
下载命令(镜像网址+kk):
git clone https://kkgithub.com/QuantumLeaps/qpc --recurse-submodules
git clone https://kkgithub.com/QuantumLeaps/qpc --recurse-submodules --depth 1
2、QPC集成开发环境安装:https://www.state-machine.com/

安装目录详情:

3、创建工程
(1)源码路径:D:\Code\QP_source\qpc

(2)在QP_source下新增blinky文件夹
PS D:\Code\QP_source> ls
目录: D:\Code\QP_source
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/7/8 23:10 blinky
d----- 2025/7/7 22:45 qpc
(3)查看 D:\Code\QP_source\qpc 路径下的 cmakeSupport.md 文件
(4)拷贝 D:\Code\QP_source\qpc\3rd_party\cmake 中的 qpc_sdk_import.cmake 至blinky文件夹
拷贝 D:\Code\QP_source\qpc\examples\posix-win32\blinky 中的 blinky.c 至blinky文件夹
(5)创建CMake脚本文件:
# use a recent CMake version
cmake_minimum_required(VERSION 3.23 FATAL_ERROR)
cmake_policy(VERSION 3.23...3.28)
cmake_policy(SET CMP0083 NEW)
cmake_policy(SET CMP0105 NEW)
cmake_policy(SET CMP0116 NEW)
cmake_policy(SET CMP0128 NEW)
# include general project config & import qpc
set(QPC_SDK_PATH ${CMAKE_SOURCE_DIR}/../qpc) # qpc框架源代码路径
# set(QPC_FETCH_FROM_GIT ON)
# set(QPC_FETCH_FROM_GIT_PATH ${CMAKE_SOURCE_DIR}/Source/qpc-sdk)
include(qpc_sdk_import.cmake)
# default image/project name is trafficlight
# Give a special name via -DIMAGE=<image>
# the main project
project(blinky # the name of the project
VERSION "1.0.0"
DESCRIPTION "my 1st qpc project"
LANGUAGES C
)
# the project target(s)
add_executable( $(PROJECT_NAME) blinky.c)
include(${QPC_SDK_PATH}/qpc_sdk_init.cmake)
set(QPC_PROJECT $(PROJECT_NAME))
set(QPC_CFG_KERNEL QV)
set(QPC_CFG_GUI FALSE)
set(QPC_CFG_PORT win32)
qpc_sdk_init()
target_link_libraries($(PROJECT_NAME) PRIVATE qpc)
(6) 生成构建文件,生成构建文件目录在build文件夹中
PS D:\Code\QP_source\blinky> cmake -B build -G "MinGW Makefiles"
-- qpc_import.cmake starting...
QPC_SDK_PATH is D:/Code/QP_source/qpc
Set QPC_CFG_GUI to ('FALSE') since not specified
Set QPC_CFG_UNIT_TEST to ('OFF') since not specified
Set QPC_CFG_VERBOSE to ('OFF') since not specified
-- Set QPC_CFG_PORT to ('win32')
-- Found port dir - './win32-qv' for port win32, KERNEL qv
-- ========================================================
Configured project qpc for win32
PROJECT_NAME = blinky
TARGET =
IMAGE =
SW_VERSION =
PORT = win32
QPC_CFG_GUI = FALSE
QPC_CFG_UNIT_TEST = OFF
QPC_CFG_KERNEL = QV
QPC_CFG_DEBUG = ON
CMAKE_C_CPPCHECK =
-- ========================================================
-- Configuring done (0.3s)
-- Generating done (0.1s)
-- Build files have been written to: D:/Code/QP_source/blinky/build
(7) 通过 cmake --build build/ 编译生成可执行文件,其中build/表示构建文件所在路径
PS D:\Code\QP_source\blinky> cmake --build build/
[ 6%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qep_hsm.c.obj
[ 12%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qep_msm.c.obj
[ 18%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_act.c.obj
[ 25%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_defer.c.obj
[ 31%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_dyn.c.obj
[ 37%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_ps.c.obj
[ 43%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_qact.c.obj
[ 50%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_qeq.c.obj
[ 56%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_qmact.c.obj
[ 62%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_time.c.obj
[ 68%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_actq.c.obj
[ 75%] Building C object qpc-sdk/CMakeFiles/qpc.dir/src/qf/qf_mem.c.obj
[ 81%] Building C object qpc-sdk/CMakeFiles/qpc.dir/ports/win32-qv/qf_port.c.obj
[ 87%] Linking C static library libqpc.a
[ 87%] Built target qpc
[ 93%] Building C object CMakeFiles/blinky.dir/blinky.c.obj
[100%] Linking C executable blinky.exe
[100%] Built target blinky
(8)执行程序

QP框架资源下载
浙公网安备 33010602011771号