- 删除 src/core/action.c|h,将 spawn 移至 src/base/process - policy_resolve_action 实现完整的 action 分发逻辑 - binding_table_cycle_mode 改为纯计算,返回模式 ID 而非修改状态 - 从 state 移除 state_workspace_cycle_layout / state_cycle_current_output - 新增 ZDWM_COMMAND_QUIT 命令,通过 plan 标志驱动 runtime 退出 - set_binding_mode 现在生成 BIND_KEY effect 以同步后端按键绑定 - 扩展 action 数据类型支持 window_send_to_workspace 和 window_cycle_output
104 lines
2.2 KiB
CMake
104 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
|
|
# use GNU23
|
|
set(CMAKE_C_STANDARD 23)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS ON)
|
|
|
|
set(APP_NAME "zdwm")
|
|
set(SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
set(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
|
set(BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
# generate compile_commands.json for clangd
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
# compile flags
|
|
add_compile_options(-g)
|
|
add_compile_options(-Wall)
|
|
# add_link_options(-fsanitize=address)
|
|
|
|
project(${APP_NAME}
|
|
VERSION 0.0.1
|
|
LANGUAGES C
|
|
)
|
|
|
|
option(BUILD_TESTING "Build tests" OFF)
|
|
|
|
add_executable(${APP_NAME}
|
|
${SOURCE_DIR}/backend/output_utils.c
|
|
${SOURCE_DIR}/backend/x11/backend.c
|
|
${SOURCE_DIR}/backend/x11/event.c
|
|
${SOURCE_DIR}/backend/x11/window.c
|
|
|
|
${SOURCE_DIR}/base/color.c
|
|
${SOURCE_DIR}/base/log.c
|
|
${SOURCE_DIR}/base/process.c
|
|
${SOURCE_DIR}/base/window_list.c
|
|
|
|
${SOURCE_DIR}/config/defaults.c
|
|
${SOURCE_DIR}/config/loader.c
|
|
${SOURCE_DIR}/config/runtime_config.c
|
|
|
|
${SOURCE_DIR}/core/binding.c
|
|
${SOURCE_DIR}/core/command_buffer.c
|
|
${SOURCE_DIR}/core/event.c
|
|
${SOURCE_DIR}/core/layer.c
|
|
${SOURCE_DIR}/core/layout.c
|
|
${SOURCE_DIR}/core/listeners.c
|
|
${SOURCE_DIR}/core/plan.c
|
|
${SOURCE_DIR}/core/policy.c
|
|
${SOURCE_DIR}/core/rules.c
|
|
${SOURCE_DIR}/core/runtime.c
|
|
${SOURCE_DIR}/core/state.c
|
|
${SOURCE_DIR}/core/window.c
|
|
|
|
${SOURCE_DIR}/layouts/fair.c
|
|
${SOURCE_DIR}/layouts/fullscreen.c
|
|
${SOURCE_DIR}/layouts/maximize.c
|
|
|
|
${SOURCE_DIR}/main.c
|
|
)
|
|
|
|
# target_compile_definitions(${APP_NAME}
|
|
# PRIVATE LOG_FILE="$ENV{HOME}/${APP_NAME}-log.txt"
|
|
# )
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
pkg_check_modules(deps REQUIRED
|
|
xcb
|
|
xcb-aux
|
|
xcb-icccm
|
|
xcb-keysyms
|
|
xcb-randr
|
|
xcb-xfixes
|
|
xcb-xinerama
|
|
xkbcommon
|
|
)
|
|
|
|
target_include_directories(${APP_NAME} SYSTEM
|
|
PRIVATE ${deps_INCLUDE_DIRS}
|
|
PRIVATE ${INCLUDE_DIR}
|
|
)
|
|
target_include_directories(${APP_NAME}
|
|
PRIVATE ${SOURCE_DIR}
|
|
PRIVATE ${BUILD_DIR}
|
|
)
|
|
|
|
target_link_libraries(${APP_NAME}
|
|
PRIVATE m
|
|
PRIVATE ${deps_LIBRARIES}
|
|
)
|
|
|
|
configure_file("${SOURCE_DIR}/app.h.in"
|
|
"${BUILD_DIR}/app.h"
|
|
ESCAPE_QUOTES
|
|
@ONLY
|
|
)
|
|
|
|
if(BUILD_TESTING)
|
|
enable_testing()
|
|
add_subdirectory(tests)
|
|
endif()
|