2017-08-07 88 views
0

我正在编写一个C++程序来监视一个值并更改笔记本电脑上触摸板和跟踪点的启用状态。除了调用XIChangeProperty之外,我有一切工作。当我运行make时,抛出获取对XIChangeProperty的未定义引用

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显示为未定义。

GitHub的回购与代码的其余部分是在这里https://github.com/kfechter/YogaModeSwitch

回答

0

原来我是缺少一个连接指令在cmake的文件

一次我加link_libraries($ {X11_Xinput_LIB})到cmake的文件,cmake并开始工作。