J'utilise Ubuntu, et je veux utiliser funopen()
, mais cette fonction est dans le système BSD seulement. Alors j'installe libbsdcomment lier <bsd/stdio.h> dans cmake pour utiliser funopen()
sudo apt-get install libbsd-dev
après cela, je peux comprendre et je vois le funopen()
dans ce fichier d'en-tête. Mais ne peut pas compiler. J'essaie utiliser dans CMakeLists.txt, mais aucune utilisation:
find_package(bsd)
Je pense que le param n'est pas bsd
, comment puis-je le faire?
[MISE À JOUR] faire comme suggestion @Alu, toujours pas:
cmake_minimum_required(VERSION 3.3)
project(myProject)
set(SOURCE_FILES main.c)
set(DIR_TO_LIB_HEADERS, /usr/include/bsd)
set(DIR_TO_BSD_LIB_FILE, /usr/lib/x86_64-linux-gnu/libbsd.so)
include_directories(${DIR_TO_LIB_HEADERS})
add_executable(myProject ${SOURCE_FILES})
target_link_libraries(myProject ${DIR_TO_BSD_LIB_FILE})
avec l'erreur:
undefined reference to `funopen'
L'erreur indique que votre compilateur ne trouve pas la définition de la méthode. Donc, soit le fichier d'en-tête ne définit pas la méthode, soit le mauvais en-tête sera référencé. Essayez d'inclure 'bsd/stdio.h' – Alu