Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用ncurses和cmake链接期间未定义的引用_C++_Linker_Cmake_Ncurses_Clion - Fatal编程技术网

C++ 使用ncurses和cmake链接期间未定义的引用

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

我试图通过包含以下标题在我的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: 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。这就是我来此线程的原因,因为我不想手动指定实际的库文件。