2017-08-07 2 views
0

J'écris un programme C++ pour surveiller une valeur et modifier l'état activé du pavé tactile et du point de suivi sur mon ordinateur portable. J'ai tout fonctionne à l'exception de l'appel à XIChangeProperty. Quand je lance make, il jetteObtention d'une référence non définie à XIChangeProperty

undefined reference to `XIChangeProperty' 

Si je supprime la #include <X11/extensions/XInput.h> de la source, il jette une autre erreur.

mon fichier CMake est la suivante

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) 

Je ne sais pas ce que je suis absent que causerait XIChangeProperty pour montrer que non définie.

Le repo github avec le reste du code est ici https://github.com/kfechter/YogaModeSwitch

Répondre

0

Il se trouve que je manque une directive de liaison dans le fichier CMake

une fois que j'ajouté link_libraries ($ {X11_Xinput_LIB}) au CMake fichier, cmake et make ont commencé à travailler.