如何 link <bsd/stdio.h> 在 cmake 中使用 funopen()
how to link <bsd/stdio.h> in cmake to use funopen()
我正在使用Ubuntu,我想使用funopen()
,但是这个功能只在BSD系统中。所以我安装了 libbsd
sudo apt-get install libbsd-dev
之后,我可以包含并在此头文件中看到 funopen()
。但是无法编译。
我尝试在 CMakeLists.txt 中使用它,但没有用:
find_package(bsd)
我认为参数不是bsd
,我该怎么做?
[已更新] 按照@Alu 的建议进行操作,仍然无效:
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})
有错误:
undefined reference to `funopen'
我认为 cmake 没有为 "finding"bsd 库提供模块。
您可以查看 here 并尝试了解 cmake 查找机制的工作原理。
但我建议在您的 cmake 文件中明确包含这些目录。
我想你必须使用像
这样的东西
set(DIR_TO_LIB_HEADERS /usr/include/bsd)
set(DIR_TO_BSD_LIB_FILE /usr/lib/i386-linux-gnu/libbsd.so) #or /usr/lib/x86_64-linux-gnu/libbsd.so on 64 bit OS
include_directories(${DIR_TO_LIB_HEADERS})
target_link_libraries(${PROJECT_NAME} ${DIR_TO_BSD_LIB_FILE})
Here 你可以找到库的文件列表。
32 位 OS:
set(DIR_TO_BSD_LIB_FILE /usr/lib/i386-linux-gnu/libbsd.so)
target_link_libraries(${PROJECT_NAME} ${DIR_TO_BSD_LIB_FILE})
64 位 OS:
set(DIR_TO_BSD_LIB_FILE /usr/lib/x86_64-linux-gnu/libbsd.so)
target_link_libraries(${PROJECT_NAME} ${DIR_TO_BSD_LIB_FILE})
我正在使用Ubuntu,我想使用funopen()
,但是这个功能只在BSD系统中。所以我安装了 libbsd
sudo apt-get install libbsd-dev
之后,我可以包含并在此头文件中看到 funopen()
。但是无法编译。
我尝试在 CMakeLists.txt 中使用它,但没有用:
find_package(bsd)
我认为参数不是bsd
,我该怎么做?
[已更新] 按照@Alu 的建议进行操作,仍然无效:
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})
有错误:
undefined reference to `funopen'
我认为 cmake 没有为 "finding"bsd 库提供模块。 您可以查看 here 并尝试了解 cmake 查找机制的工作原理。
但我建议在您的 cmake 文件中明确包含这些目录。 我想你必须使用像
这样的东西set(DIR_TO_LIB_HEADERS /usr/include/bsd)
set(DIR_TO_BSD_LIB_FILE /usr/lib/i386-linux-gnu/libbsd.so) #or /usr/lib/x86_64-linux-gnu/libbsd.so on 64 bit OS
include_directories(${DIR_TO_LIB_HEADERS})
target_link_libraries(${PROJECT_NAME} ${DIR_TO_BSD_LIB_FILE})
Here 你可以找到库的文件列表。
32 位 OS:
set(DIR_TO_BSD_LIB_FILE /usr/lib/i386-linux-gnu/libbsd.so)
target_link_libraries(${PROJECT_NAME} ${DIR_TO_BSD_LIB_FILE})
64 位 OS:
set(DIR_TO_BSD_LIB_FILE /usr/lib/x86_64-linux-gnu/libbsd.so)
target_link_libraries(${PROJECT_NAME} ${DIR_TO_BSD_LIB_FILE})