C++ 使用ncurses和cmake链接期间未定义的引用
我试图通过包含以下标题在我的C++程序中使用ncurses:C++ 使用ncurses和cmake链接期间未定义的引用,c++,linker,cmake,ncurses,clion,C++,Linker,Cmake,Ncurses,Clion,我试图通过包含以下标题在我的C++程序中使用ncurses: #include <curses.h> #include <menu.h> #include <stdlib.h> 编译进行得很顺利,但是在链接时我遇到了以下错误: [ 20%] Linking CXX executable LearnC CMakeFiles/LearnC.dir/main.cpp.o: In function `main': ../LearnC/main.cpp:20: und
#include <curses.h>
#include <menu.h>
#include <stdlib.h>
编译进行得很顺利,但是在链接时我遇到了以下错误:
[ 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(LearnC curses)
从CMAKE的文档中,您需要为目标链接库指定文件而不是目录。大概是
target_link_libraries(LearnC curses)
在这种情况下(使用
find_-package(Curses)
)库文件列在Curses\u-LIBRARIES变量中:target\u-link\u-LIBRARIES(LearnC${Curses\u-LIBRARIES})
。这很有效。另外,将-lncurses
添加到集合(CMAKE_CXX_FLAGS“${CMAKE_CXX_FLAGS}-std=c++11”)
也有帮助。@Tsyvarev我也这么认为,但实际上我已经尝试过了,这就是为什么我会出现错误的原因。使用cmake
v3.x。这就是我来此线程的原因,因为我不想手动指定实际的库文件。在这种情况下(使用find_-package(Curses)
)库文件列在Curses_-LIBRARIES变量中:target_-link_-LIBRARIES(LearnC${Curses_-LIBRARIES})
。这很有效。另外,将-lncurses
添加到集合(CMAKE_CXX_FLAGS“${CMAKE_CXX_FLAGS}-std=c++11”)
也有帮助。@Tsyvarev我也这么认为,但实际上我已经尝试过了,这就是为什么我会出现错误的原因。使用cmake
v3.x。这就是我来此线程的原因,因为我不想手动指定实际的库文件。