c - 如何在 CLion 中链接库?
问题描述
我一直在这个问题上一段时间了,找不到任何东西来解决我的问题。我正在尝试在我的程序中使用 ncurses.h 库,但链接器失败并告诉我我有未定义的符号。我通过创建一个名为include的新文件夹并将 ncurses.h 的位置从复制/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/ncurses.h
到新文件夹来解决此问题。然后我将这一行放入我的 CMakeLists.txt 文件中:target_link_libraries(<project name> includes/ncurses.h)
. 但后来我得到另一个错误说ld: library not found for -lincludes/ncurses.h
。我试过使用add_library()
,但这给了我一个错误说:
The target name "includes/ncurses.h" is reserved or not valid for certain
CMake features, such as generator expressions, and may result in undefined
behavior.
有没有人有任何其他建议?
解决方案
要查找ncurses
库的位置,您需要使用find_package()
来定位Curses
包。将find_package()
返回CURSES_INCLUDE_DIR
和CURSES_LIBRARY
环境变量以及包含文件和库的位置。
以下是适用于 macOS 上的 CLion 的最小示例:
CMakeLists.txt
cmake_minimum_required(VERSION 2.9)
project(test)
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
add_executable(test test.c)
target_link_libraries(test ${CURSES_LIBRARY})
测试.c
#include <ncurses.h>
int main()
{
initscr(); /* Start curses mode */
printw("Hello World !!!"); /* Print Hello World */
refresh(); /* Print it on to the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
return 0;
}
推荐阅读
- c# - 公共抽象类 Foo
其中 T : Foo . 何时/为什么这对确保 T 实现 Foo 有用 - r - 如何手动将图例添加到ggplot
- momentjs - 带有时区缩写的 Dayjs 格式,即像 moment.js 中的 'z'
- c# - C# 列出当前目录中的文件与数组中匹配的正则表达式模式
- pycharm - 在 Windows 任务调度程序上运行 Python 脚本
- css - CSS:在菜单中更改标题颜色
- react-native - React Navigation v5 堆栈导航器在使用 expo 之前工作正常后停止工作
- sql-server - 无法访问 dockerized SQL Server 实例
- html - CSS Grid - 我们可以根据行调整间隙吗?
- matlab - 在 Matlab 中设置图形的 dpi