gpt4 book ai didi

CMake 3.9.1 : Cmake not finding library ncurses

转载 作者:行者123 更新时间:2023-11-30 16:41:19 28 4
gpt4 key购买 nike

在标记为重复之前,我已经在 Stackoverflow 上阅读了 8 个与此类似的不同问题,在其他地方更是如此。如果这些答案中的任何一个解决了我的问题,我就不会发布此内容。

我在 SDL2 库中使用了这个确切的模板,没有出现任何问题,我所做的唯一更改是将“SDL2”更改为“Curses”以及 set(CURSES_NEED_NCURSES TRUE) 行。 (对于任何想知道的人来说,如果没有那行,这仍然会失败)

是的,我已经安装了它,并且我可以使用 gcc main.c -lncurses 轻松编译它,没有问题。

cmake_minimum_required (VERSION 2.6)
project (ncurses-practice)

# Version info
set(CMake_ncurses-practice_VERSION_MAJOR 1)
set(CMake_ncurses-practice_VERSION_MINOR 0)

# Common Variables
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(SRC ${CMAKE_SOURCE_DIR}/src)
set(HDRS ${CMAKE_SOURCE_DIR}/headers)
set(CMAKE_C_FLAGS " -Wall")

# Set Ncurses
set(CURSES_NEED_NCURSES TRUE)
find_package(Curses)


# Debug
set(CMAKE_BUILD_TYPE Debug)

# Source Files
set(SRC_FILES
${SRC}/main.c
)

# Included directories
include_directories("src" "headers" ${CURSES_INCLUDE_DIRS})

# Generate Executable
add_executable(a.out ${SRC_FILES})

# Add libraries here after the project name
target_link_libraries(ncurses-practice ${CURSES_LIBARIES})

最佳答案

find_package(Curses) 期望 FindCurses.cmake 文件出现在您的 CMAKE_MODULE_PATH 中。

FindCurses.cmake应该找到curses库并设置所需的变量。您可以使用FindCurses.cmake中的find_path、find_library等其他函数来查找curses库。另一种方法是编写一个 .pc 文件并使用 pkg_check_modules 来查找这个 Curses 库。

除此之外,这两行还有错误

add_executable(a.out ${SRC_FILES})

target_link_libraries(ncurses-practice ${CURSES_LIBARIES})

这里 add_executable 正在创建一个名为 a.out 的目标,而您正在链接一个不存在的目标 (ncurses-practice) 的 CURSES_LIBRARIES。

因此将您的 add_executable 更改为

add_executable(ncurses-practice ${SRC_FILES})

关于CMake 3.9.1 : Cmake not finding library ncurses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290897/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com