2017-09-28 2 views
0

J'essaie d'écrire un programme simple avec PulseAudio lib. Tout va bien quand il compile sous gcc (gcc -o name_one name_two.cpp -lpulse-simples -lpulse), mais quand je copie mon programme à Clion (sous cmake), il vomit une erreur:PulseAudio ne compilera pas sur cmake

main.cpp:49: undefined reference to pa_simple_new
main.cpp:50: undefined reference to pa_strerror
main.cpp:78: undefined reference to pa_simple_drain
main.cpp:72: undefined reference to pa_simple_write
main.cpp:73: undefined reference to pa_strerror
main.cpp:79: undefined reference to pa_strerror
main.cpp:85: undefined reference to pa_simple_free

J'ai essayé d'ajouter des liens (de -lpulse -lpulse-simples) dans mon makeafile.txt comme ceci:

add_compile_options(-lpulse-simple -lpulse)

mais cela ne fonctionne pas.

Comment le faire correctement?

Répondre

0

Après avoir ajouté

target_link_libraries("project name" pulse-simple pulse) 

à mon code, il a été occurating encore une erreur (bibliothèque introuvable). J'ai trouvé sur github ces lignes:

find_path(PULSEAUDIO_INCLUDE_DIR 
     NAMES pulse/pulseaudio.h 
     DOC "The PulseAudio include directory" 
     ) 

find_library(PULSEAUDIO_LIBRARY 
     NAMES pulse 
     DOC "The PulseAudio library" 
     ) 

et je les ai ajoutés au fichier. Tout fonctionne bien, copie de mon fichier cmake:

cmake_minimum_required(VERSION 3.8) 
project(Audio) 
set(CMAKE_CXX_STANDARD 11) 
find_path(PULSEAUDIO_INCLUDE_DIR 
     NAMES pulse/pulseaudio.h 
     DOC "The PulseAudio include directory" 
     ) 
find_library(PULSEAUDIO_LIBRARY 
     NAMES pulse 
     DOC "The PulseAudio library" 
     ) 
include_directories(${PULSEAUDIO_INCLUDE_DIRS}) 
set(SOURCE_FILES main.cpp) 
add_executable(Audio ${SOURCE_FILES}) 
target_link_libraries(Audio pulse-simple pulse)