c++ - 使用 ncurses 和 cmake 链接期间 undefined reference

标签 c++ linker cmake ncurses clion

我试图通过包含以下 header 在我的 C++ 程序中使用 ncurses:

#include <curses.h>
#include <menu.h>
#include <stdlib.h>

我正在使用 CLion IDE,这是我的 CMakeList.txt:

cmake_minimum_required(VERSION 3.6)
project(LearnC)

set(CURSES_USE_NCURSES TRUE)
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(LearnC ${SOURCE_FILES})
target_link_libraries(LearnC ${CURSES_INCLUDE_DIR})

编译顺利,但是在链接时我遇到了这些错误:

[ 20%] Linking CXX executable LearnC
CMakeFiles/LearnC.dir/main.cpp.o: In function `main':
../LearnC/main.cpp:20: undefined reference to `initscr'
../LearnC/main.cpp:22: undefined reference to `clear'
../LearnC/main.cpp:23: undefined reference to `noecho'
../LearnC/main.cpp:24: undefined reference to `curs_set'
../LearnC/main.cpp:25: undefined reference to `cbreak'
../LearnC/main.cpp:26: undefined reference to `nl'
../LearnC/main.cpp:27: undefined reference to `stdscr'
../LearnC/main.cpp:27: undefined reference to `keypad'

我该怎么做才能解决这个问题?

最佳答案

根据 CMAKE 的文档,您需要为 target_link_libraries 指定文件而不是目录。所以像

target_link_libraries(LearnC curses)

https://cmake.org/cmake/help/v2.8.12/cmake.html#command%3atarget_link_libraries

关于c++ - 使用 ncurses 和 cmake 链接期间 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710903/

相关文章:

c++ - 克服下载 CSV 文件进行解析时的问题。 Linux 与 Windows 换行符

c++ - 对递归数独回溯函数的模糊调用。

c - 为什么我的程序仅根据我向 Clang 提供源文件操作数的顺序而表现不同?

c - 链接器警告,将 .stack 节的开头更改 4 个字节

c++ - 在 const int 上定义,但将值放在已安装的 header 中

C++ MSVS 项目内链接器错误 LNK2019 - 声明定义不匹配?

c++ - 使用 LAPACK 计算无限带状矩阵的特征值

c - 基础教程? Eclipse CDT 中的 Makefile

cmake - 使用 Cmake 和 Qt5 进行自动翻译管理

c++ - 通过参数传递任何函数