You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMake项目中使用libuiohook库?

解决libuiohook在CMake项目中找不到的问题

一、核心问题原因

你将libuiohook安装到了自定义路径../dist,但CMake默认不会搜索这类非系统路径,因此需要明确告知CMake库的具体位置。

二、正确的CMake配置方案

方案1:利用CMake配置文件(优先推荐)

libuiohook安装后会生成uiohookConfig.cmake等配置文件,直接通过find_package配合路径指定即可:

假设你的项目结构如下:

- my_project/
  - src/
    - main.c
  - CMakeLists.txt
- libuiohook/
  - dist/  # 你的库安装目录

编写CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.10)
project(my_uiohook_demo C)

# 替换成你实际的libuiohook/dist绝对路径,避免相对路径的不确定性
set(LIBUIOHOOK_INSTALL_DIR "/home/xxx/libuiohook/dist")

# 将库安装目录加入CMake的搜索路径列表
list(APPEND CMAKE_PREFIX_PATH ${LIBUIOHOOK_INSTALL_DIR})

# 查找uiohook库,REQUIRED表示找不到则直接报错
find_package(uiohook REQUIRED)

# 添加可执行文件
add_executable(demo src/main.c)

# 链接uiohook库,uiohook::uiohook是CMake配置文件提供的预定义目标
target_link_libraries(demo PRIVATE uiohook::uiohook)

方案2:手动指定头文件和库路径(备用)

如果find_package仍有问题,可直接手动指定路径:

cmake_minimum_required(VERSION 3.10)
project(my_uiohook_demo C)

set(LIBUIOHOOK_INSTALL_DIR "/home/xxx/libuiohook/dist")

# 添加头文件搜索路径
include_directories(${LIBUIOHOOK_INSTALL_DIR}/include)

# 查找动态库文件
find_library(UIOHOOK_LIB uiohook PATHS ${LIBUIOHOOK_INSTALL_DIR}/lib)

add_executable(demo src/main.c)

# 链接找到的库文件
target_link_libraries(demo PRIVATE ${UIOHOOK_LIB})

三、编译与运行注意事项

  1. 编译时动态指定路径(可选):如果不想在CMakeLists里写死路径,可在编译时通过命令行传入:
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH=/home/xxx/libuiohook/dist
cmake --build .
  1. 运行时动态库加载:
    • Linux:运行前需指定动态库路径:
      export LD_LIBRARY_PATH=/home/xxx/libuiohook/dist/lib:$LD_LIBRARY_PATH
      ./demo
      
    • macOS:替换为DYLD_LIBRARY_PATH
    • Windows:将dist/bin下的dll文件复制到可执行文件同目录,或添加到系统PATH环境变量

四、C++与构建工具学习资源推荐

书籍

  • 《CMake实战》:入门友好,通过实际案例讲解CMake常用语法和项目配置技巧
  • 《C++ Primer》:经典C++入门教材,覆盖核心语法、标准库,适合系统打基础
  • 《Effective C++》:进阶必备,讲解C++编程的最佳实践,帮你写出高效安全的代码
  • 《Mastering CMake》:CMake官方权威书籍,深入讲解高级特性与大型工程实践

视频

  • B站「CMake从入门到精通」系列:零基础入门,用实际项目演示CMake的常见用法
  • 极客时间「现代C编程实战」:系统讲解现代C特性,包含构建工具的工程化实践
  • YouTube「CMake Tutorial」系列(英文):内容细致全面,从基础到高级的系统讲解

内容的提问来源于stack exchange,提问作者user17914190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:50:20