如何在Cmake中链接curses.h?

2023-12-03

我知道也许这是一个愚蠢的问题,但我无法看透它,我在这里搜索了其他答案,这些答案与我的非常接近,但是,我仍然不明白该怎么做。

问题是我无法编译在Windows中使用curses.h的“C”程序(我正在将Clion与MinGW一起使用),当我尝试这样做时,它为curses.h中的函数提供“未定义的引用” (例如“initscr”、“清除”...)。

通过 MinGW 安装管理器,我安装了“mingw-32-libpdcurses”(有两个可用的两个不同的类:dev 和 dll;我安装了 dll 之一)。

我正在使用的 CMAKEfile 是这样的:

cmake_minimum_required(VERSION 3.3)
project(Project1)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -lpdcurses")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")

file(GLOB Project1_SRC
        "*.h"
        "*.c"
        )

add_executable(Project1 ${Project1_SRC})

我应该对其进行哪些更改才能使其与curses.h 一起编译?


基本上与您定位和集成的方式相同any使用 CMake 的第三方库:使用打包的之一Find___.cmake模块。

这些位于share/cmake-X.Y/Modules您的 CMake 安装目录。检查文件本身的单独文档,并且cmake --help-command find_package了解如何致电他们的详细信息。

我还没有专门在 MinGW 上使用 PDCurses 尝试过以下操作,但如果它不起作用,则会向 Kitware(CMake 的制造商)报告一个明确的错误:

find_package( Curses REQUIRED )
include_directories( ${CURSES_INCLUDE_DIRS} )
target_link_libraries( Project1 ${CURSES_LIBRARIES} )

根据需要设置以下变量来告诉您哪个标头可用:

  • CURSES_HAVE_CURSES_H for curses.h
  • CURSES_HAVE_NCURSES_H for ncurses.h
  • CURSES_HAVE_NCURSES_NCURSES_H for ncurses/ncurses.h
  • CURSES_HAVE_NCURSES_CURSES_H for ncurses/curses.h

附加建议:

file(GLOB Project1_SRC
        "*.h"
        "*.c"
        )

不要那样做。

引用该函数的文档:

我们不建议使用 GLOB 从源树中收集源文件列表。如果添加或删除源时 CMakeLists.txt 文件没有更改,则生成的构建系统无法知道何时要求 CMake 重新生成。


set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")

也不要这样做。

你不想要any生成的文件最终会出现在您的source目录(它们会妨碍版本控制系统,或者更糟糕的是,实际上会签入存储库)。你想要生成中的所有内容binary目录,完全不妨碍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Cmake中链接curses.h? 的相关文章

  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 为什么调用 main 函数被认为是未定义的行为 (UB)

    我担心这又是一个关于解释 ISO IEC 14882 C 标准 的问题 但是 正在呼叫main从程序中 例如我的使命main 递归地从main至少不是实现定义的行为 更新 我的意思是稍后格式不正确 未定义实现 也不是 UB 请参见下文并回答
  • 无法查看 Azure 日志流中的日志

    在我的 Web Api 应用程序中 我有控制器 Route api controller public class ValuesController Controller GET api values HttpGet public IEnu
  • GtkDrawingArea - 如何使其可绘制?

    我有点失去理智了 我正在尝试使用 cairo 在 GTK 表单上绘制一些简单的图形 include
  • 晾干石头剪刀布

    我是一个新手 ruby 程序员 虽然这段代码可以工作 但我想知道如何改进它 我对 lambda 和 procs 等的了解非常有限 但任何建议都会很棒 有什么办法可以简化if else每种情况下的陈述 另外 有没有什么替代方法case语句被跳
  • 如何在javascript中设置JSTL变量值?

    如何在javascript中设置JSTL变量值 我如何设置 user 多变的 JSTL 来自 的值val1 JavaScript 这是不可能的 因为它们在不同的环境中执行 JSP 在服务器端 JavaScript 在客户端 因此它们不会按照
  • 在 save_post 上设置产品重量的挂钩

    有没有办法设置产品重量save post hook 我有以下代码 但我不知道如何覆盖重量 add action save post change weight function change weight post id WC Produc
  • 为 Neo4j 的 CQL 创建 NOT MATCH 命令?

    我有一个非唯一节点 Neighborhood 它唯一地出现在 IN 一个 City 节点 我想创建一个新的邻里节点 并仅当该邻里节点不存在于该城市时才建立其关系 可以有多个具有相同名称的社区 但每个社区必须在房产城市中唯一出现 遵循吉尔在这
  • 回归基础:Apache Camel 路由和直接组件

    我对骆驼路线及其两个端点有点困惑 Direct 和 Seda 好吧 假设我有一条这样的路线 public void configure from direct services process Some processing here to
  • 如何防止 Prolog 在不该回溯的地方回溯

    我正在尝试解决一个 CSP 我需要向调酒师分发鸡尾酒 以便每个调酒师最多拥有一份鸡尾酒 并且所有鸡尾酒都由调酒师提供 我通过创建 clpfd 变量列表来解决这个问题 首先为他们提供所有调酒师的完整域 然后删除所有不知道如何制作鸡尾酒的调酒师
  • KStream 和 KTable 之间的时间语义

    我正在尝试构建以下拓扑 使用 Debezium 连接器 我拉出 2 个表 我们称它们为表 A 和 DA 根据 DBZ 存储表行的主题具有结构 before after 我的拓扑中的第一步是根据这两个 表 主题创建 干净 的 KStream
  • 如何使用Advanced Drive服务上传文件

    我有以下 Google Apps 脚本 它从上传表单中获取文件并将其自动存储在我的 Google 云端硬盘中 下面的代码片段中包含完整代码 问题出在这一部分 var file folder createFile blob Get root
  • Twitter4J:获取 Twitter 帐户的所有状态

    我正在为我的应用程序使用 Twitter4J API 我想获取我的 Twitter 帐户上的所有状态 或者如果不是全部 也可以是大部分状态 这可能吗 目前我正在使用 getUserTimeline 但这只检索最后 20 非常感谢和问候 Kr
  • 我需要我的脚本在 -Whatif 输出中包含“LastWriteTime”属性

    我需要编辑在这里找到的脚本 以便我可以首先看到它将删除的文件的报告 包括文件名和路径以及 LastWriteTime 属性 以便我可以分析脚本的输出执行前几个月以及将其配置为计划任务之前 我已经尝试使用 LastWriteTime 对象属性
  • 缩放后获取 SVG 坐标中的鼠标位置

    使用 D3 v4 SVG 和缩放行为 在 mousemove 上 我想在 SVG 坐标系中显示鼠标坐标 mousemove 事件似乎仅提供客户端 屏幕坐标 如何将这些坐标转换为反映当前缩放 平移 等变换的 SVG 坐标 我可以看到使用 ax
  • 错误:绑定变量的数量与标记的数量不匹配

    我只想在数据库 mySQL 中没有对应关系的情况下进行插入 但他让我没有声明 这是片段 if sql gt rowCount gt 0 echo Non inserisci else echo Inserisci db gt beginTr
  • 带 @Value 的 Spring 表达式语言 (SpEL):美元与哈希($ 与 #)

    我对何时使用有点困惑 相比 Spring的文档仅使用 但是有很多使用的例子 此外 当我开始使用 SpEL 时 我被告知要使用 而且效果很好 对于那些感到困惑的人 我如何使用它的一个例子是 Component public class Pro
  • 从服务交互启动 .Net winforms 应用程序

    环境 VS2008 Vista SP1 我编写了一个进程管理服务 它可以在会话 0 或交互式控制台 通常是 1 中启动应用程序 请注意 这不是正常的操作模式 仅用于内部调试目的 在现场 这些进程将安全地隐藏在会话 0 中 安全问题不适用 显
  • 从 C# 中的内存流保存为 jpeg

    我有一个如下所示的方法将图像保存为 jpeg 我想以相同的高度和宽度保存所有图片而不变形 我怎样才能做到这一点 请帮忙 public void SaveFileOnDisk MemoryStream ms string FileName t
  • SQL 减去查询中前一行的值的最佳方法?

    我正在尝试计算数据库中机器丢失的总时间 表中的列是 MachineID 又名 PlantID StartTime EndTime 理论上 它只是简单地按 machineID 和 StartTime 对表进行排序 然后获取当前行的 Start
  • 如何在Cmake中链接curses.h?

    我知道也许这是一个愚蠢的问题 但我无法看透它 我在这里搜索了其他答案 这些答案与我的非常接近 但是 我仍然不明白该怎么做 问题是我无法编译在Windows中使用curses h的 C 程序 我正在将Clion与MinGW一起使用 当我尝试这