M1芯片Mac使用CLion开发ncurses贪吃蛇出现链接错误求解决
问题原因
这个报错是编译链接阶段没有正确关联ncurses库导致的,和你实现的kbhit函数本身逻辑无关,M1芯片Mac的ncurses库默认安装路径、架构和Intel平台有差异,会额外增加配置难度。
修复步骤
1. 先安装ncurses库
如果还没安装过ncurses,先在终端执行命令完成安装:brew install ncurses
2. 修改项目CMakeLists.txt配置
在你的CLion项目的CMakeLists.txt中添加ncurses库的查找和链接规则,参考配置如下:
cmake_minimum_required(VERSION 3.25) project(training) # 替换为你的实际项目名 set(CMAKE_CXX_STANDARD 17) # 指定M1 Mac通过homebrew安装的ncurses路径 set(CMAKE_PREFIX_PATH "/opt/homebrew/opt/ncurses") # 查找ncurses库 find_package(Curses REQUIRED) include_directories(${CURSES_INCLUDE_DIR}) add_executable(training main.cpp) # 替换为你的实际目标名、源文件名 # 链接ncurses库 target_link_libraries(training ${CURSES_LIBRARIES})
3. 补全代码中ncurses的初始化、销毁逻辑
ncurses的API调用前必须完成初始化,使用结束后也要销毁上下文,修改main函数即可:
int main() { // 新增ncurses初始化逻辑 initscr(); // 初始化屏幕 cbreak(); // 禁用行缓冲,输入字符直接传递给程序 noecho(); // 输入的字符不回显到屏幕 nodelay(stdscr, TRUE); // 把getch设为非阻塞模式,没有输入时返回ERR,适配你的kbhit逻辑 keypad(stdscr, TRUE); // 支持特殊按键输入 Setup(); while(!gameOver) { Draw(); Input(); Logic(); } // 新增ncurses销毁逻辑 endwin(); return 0; }
其余代码逻辑不需要修改,你实现的kbhit函数可正常运行。
4. 可选兜底配置
如果修改CMakeLists后仍报找不到ncurses的错误,打开CLion的设置 -> 构建、执行、部署 -> CMake,在CMake选项栏添加如下参数后重新加载CMake项目即可:
-DCMAKE_PREFIX_PATH=/opt/homebrew/opt/ncurses
内容的提问来源于stack exchange,提问作者Kopytchuk Serhii
相关产品推荐
相关产品推荐

