我目前正在研究 ncurses。 Ncurses 是我安装的库,不是我自己的文件。我已经做了一些事情,但使用 IDE 更容易,所以我决定使用 CLion(我在 Linux 上,所以不能使用 Visual Studio)。我得到以下 CMakeLists.txt:
cmake_minimum_required(VERSION 3.6)
project(ncurses)
set(CMAKE_C_STANDARD "${CMAKE_C_FLAGS} -Wall -Werror -lpdcurses")
set(SOURCE_FILES main.cpp ncurses.h)
add_executable(ncurses ${SOURCE_FILES})
我的项目叫做 ncurses 我不知道这是否重要。
我得到了以下 main.cpp
#include <ncurses.h>
int main() {
initscr();
printw("Hello");
refresh();
getch();
endwin();
return 0;
}
但是,我收到以下错误:
/opt/clion/bin/cmake/bin/cmake --build /home/josh/ClionProjects/ncurses /cmake-build-debug --target all -- -j 4
make[2]: *** No rule to make target 'CMakeFiles/ncurses.dir/build'. Stop.
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/ncurses.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
我不明白问题是什么。除了 lpdcurses
之外,我尝试了 -lncurses
但这也不起作用。它只会在构建时出错,但不会在 IDEA 本身中出错。
最佳答案
要告诉编译器使用 CMake 链接库,您应该使用 target_link_libraries()
函数。
将此添加到您的 CMakeLists.txt
中:
target_link_libraries(${PROJECT_NAME} ncurses)
但是,您的错误代码似乎不是由链接引起的。尝试在 add_executable()
之前添加此行:set(CMAKE_CXX_STANDARD 17)
。将 17 替换为您想要的任何 C++ 版本。我很确定它不会改变任何东西,但值得一试。另外,不要忘记重新加载 cmake 项目并重置缓存。
关于cmake - 在 CLion CMake 中链接 ncurses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017629/