0

我正在编写一个 C++ 程序来监视一个值并更改我的笔记本电脑上触摸板和跟踪点的启用状态。除了调用 XIChangeProperty 之外,我一切正常。当我运行 make 时,它​​会抛出

 undefined reference to `XIChangeProperty'

如果我 #include <X11/extensions/XInput.h>从源中删除,它会引发不同的错误。

我的cmake文件如下

cmake_minimum_required(VERSION 2.8.4)
set(CMAKE_INSTALL_PREFIX "/")
set(CPACK_PACKAGING_INSTALL_PREFIX "/")

project(thinkpad_yoga_mode_detection)

set (PROJECT_VERSION "1.0")
set (PACKAGE "${PROJECT_NAME}")
set (VERSION "${PROJECT_VERSION}")
set (PACKAGE_NAME "${PACKAGE}")
set (PACKAGE_TARNAME "${PACKAGE}")
set (PACKAGE_VERSION "${VERSION}")
set (PACKAGE_STRING "${PACKAGE} ${VERSION}")

set(CMAKE_CXX_STANDARD 11)

find_package(X11 REQUIRED)
link_libraries(${X11_LIBRARIES})
include_directories(${X11_INCLUDE_DIR})

set(CMAKE_CXX_FLAGS "-O2")
set(CMAKE_CXX_FLAGS "-Wall")


set(SOURCE_FILES YogaModeSwitch.cpp)
add_executable(yoga_mode_switch ${SOURCE_FILES})
install(TARGETS yoga_mode_switch DESTINATION usr/bin)
install(
  FILES yoga_mode_switch_daemon DESTINATION etc/init.d
  PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
              GROUP_EXECUTE GROUP_READ
              WORLD_EXECUTE WORLD_READ)

我不确定我缺少什么会导致 XIChangeProperty 显示为未定义。

编辑:回购已被删除(现在)删除链接,因为它已经死了

4

1 回答 1

1

原来我在 cmake 文件中缺少链接器指令

一旦我将 link_libraries(${X11_Xinput_LIB}) 添加到 cmake 文件中,cmake 和 make 就开始工作了。

于 2017-08-08T03:35:40.227 回答