gtkmm 的 CMake 错误

2024-03-23

我正在使用 Debian 8 并安装了 libgtkmm-3.0(以及 -dev)。现在我有一个使用 gtkmm 的非常简单的程序,基本上是一个 Hello World:

主要.cpp:

#include "../include/BrowserWindow.class.hpp"
#include <gtkmm/application.h>

int main(int argv, char *argc[])
{
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

    BrowserWindow helloworld;

    //Shows the window and returns when it is closed.
    return app->run(helloworld);
}

BrowserWindow.class.cpp:

#include "../include/BrowserWindow.class.hpp"
#include <iostream>

BrowserWindow::BrowserWindow()
: m_button("Hello World")  
{
  set_border_width(10);

  m_button.signal_clicked().connect(sigc::mem_fun(*this, &BrowserWindow::on_button_clicked));

  add(m_button);

  m_button.show();
}

BrowserWindow::~BrowserWindow()
{
}

void BrowserWindow::on_button_clicked()
{
  std::cout << "Hello World" << std::endl;
}

BrowserWindow.class.hpp:

#ifndef VB_BROWSERWINDOW_CLASS_H
#define VB_BROWSERWINDOW_CLASS_H

#include <gtkmm/button.h>
#include <gtkmm/window.h>

class BrowserWindow : public Gtk::Window
{

public:
  BrowserWindow();
  virtual ~BrowserWindow();

protected:
  void on_button_clicked();

  Gtk::Button m_button;
};
#endif

现在,如果我手动编译它或使用自制的 makefile,使用 pkg-config gtkmm-3.0 --cflags 和 pkg-config gtkmm-3.0 --libs,一切正常。但是,使用 CMake 我遇到编译错误。运行 cmake 就可以了:

-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
-- checking for module 'gtkmm-3.0'
--   found gtkmm-3.0, version 3.14.0
-- Configuring done
-- Generating done
-- Build files have been written to: bla/bla/build

现在运行 make 出现问题:

projectdir/hardsource/main.cpp: In function ‘int main(int, char**)’:
projectdir/hardsource/main.cpp:6:102: error: no matching function for call to ‘Gtk::Application::create(char**&, int&, const char [18])’
         Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

接下来是一些我可能指的潜在功能“候选者”......

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.2)
project(myproject)

find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0)

link_directories(${GTKMM_LIBRARY_DIRS})
include_directories(include ${GTKMM_INCLUDE_DIRS})

file(GLOB SOURCES "hardsource/*.cpp")

add_executable(mybinary ${SOURCES})

target_link_libraries(mybinary ${GTKMM_LIBRARIES})

我比较了使用手动 pkg-config 生成的编译器标志(包括以及 lib)和由 cmake 的 pkg-config 生成的编译器标志。两者是相同的。

那么,出了什么问题呢? :/


你已经互换了argc and argv在你的主要功能中。改变:

int main(int argv, char *argc[])

into

int main(int argc, char *argv[])

See int argc, char *argv[] 是什么意思? https://stackoverflow.com/q/3024197/2436175

附带说明一下,我怀疑它是否真的可以与自制的 Makefile 一起使用。也许您并没有真正编译所有文件。

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

gtkmm 的 CMake 错误 的相关文章

随机推荐

  • 在jgit中配置known_hosts

    使用 jgit 和 gitolite 进行源代码控制 我有一个应用程序 可以根据命令生成某些代码 并且我们希望将其提交给源代码控制 目标是快速拉动 提交新代码 然后推送它 我有以下方法 private void commitToGitRep
  • 为什么 ISO/IEC 对 C 和 C++ 标准收费而不是免费提供?

    ISO C 标准 ISO IEC 9899 和 ISO C 标准 ISO IEC 14882 未在线发布 相反 人们必须购买每一项标准的 PDF 版本 我想知道这背后的基本原理是什么 对于 C 和 C 编程语言来说 这些语言的权威规范不能免
  • 静态 constexpr 类成员何时需要类外定义?

    我有以下 C 11 代码 简化版本 struct Info const char name int version class Base public const Info info Base Info info info info cla
  • Xaringan 幻灯片上的目录?

    我想知道是否可以将显示目录的幻灯片添加到使用 xaringan 包创建的文档中 谢谢 Update 以下几行将为您提供自动大纲 不幸的是 我不知道如何在 RStudio 中自动重新加载 R 脚本文件 如果有人知道什么 请随时在下面评论或回答
  • 如何将 Windows Update 设置为从不使用 PowerShell 检查更新?

    我正在寻找使用 PowerShell Windows Server 2008 R2 编写脚本的帮助 因此 Windows 更新设置为 从不检查更新 我找到了一些接近的答案 但我仍然无法做我想做的事 目前 我必须通过单击 Windows 更新
  • JQuery 对话框作为输入

    我不太习惯使用 jquery 对话框之类的东西 所以这是一个新手问题 此时 我正在使用提示来获取 SharePoint 中用户的回复 var answer dialog Type the text you want to display i
  • 使用 Spring RestTemplate 将嵌套 JSON 对象映射到 Java 类

    我知道这可能很简单 但是 我就是无法让它发挥作用 所以我尝试使用 Spring RestTemplate 来映射我的 JSON 数据 我有以下来自休息调用的 JSON 响应 message ok status ok data Name Yo
  • 熊猫合并 101

    我怎样才能执行 INNER LEFT RIGHT FULL OUTER JOIN和熊猫 合并后如何为缺失的行添加 NaN 合并后如何摆脱 NaN 我可以合并索引吗 如何合并多个 DataFrame 与 pandas 交叉连接 merge j
  • 动画 UIProgressView 的变化

    是否可以动画化 a 的变化UIProgressView以便显示能够平滑地移动到新值 有点像 NSProgressIndicator 那样 如果您对此感兴趣 请填写错误报告 Duplicate 5883058 Title UIProgress
  • 在 Ember.JS ember-cli 应用程序中包含引导库的推荐方法

    我正在尝试在当前的 ember cli 项目中正确安装 Twitter Bootstrap 我确实用 Bower 安装了 bootstrap bower install save bootstrap 现在库已下载到 vendor boots
  • 如何使用AES解密使用openssl命令加密的Java文件?

    我需要使用以下命令在 JAVA 中解密在 UNIX 中加密的文件 openssl aes 256 cbc a salt in password txt out password txt enc mypass mypass 我必须在 java
  • 如何从 JavaScript 中的字符串中删除单词数组?

    我有一个可以从字符串中删除单词的函数 这是 var removeFromString function oldStr fullStr return fullStr split oldStr join 我这样使用它 console log r
  • Maven 部署:即使工件已经存在也强制部署

    我正在构建一个项目 它由几个 有时不相关的 模块和一些更多的非标准 java 模块 使用 ANT 构建 组成 每个 Maven 模块在完成后都会部署到发布存储库 如果构建在中间失败 我可能已经部署了一些模块 因此如果我尝试重建 新的部署尝试
  • 退出和退出有什么区别!在红宝石中?

    退出和退出有什么区别 在红宝石中 几件事 退出处理程序以 exit 形式运行 但不是 exit 这意味着分配给 清理 的任何代码都不会使用 退出 来运行 退出 中的 退出状态 默认设置为 false 形式 而在 退出 形式中则为真 退出状态
  • 使用 xlrd 时读取包含公式的单元格值会返回 0.0

    我尝试读取单元格值 例如 Excel 工作表中的 E5 和 E5 包含一个公式 A29 A2 我使用以下代码 它返回 0 00 而不是实际值1 440408 有办法解决这个问题吗 我想打印正确的值 请在这件事上给予我帮助 谢谢 book x
  • jQuery 在 Chrome 和 Mac OS 上停止运行

    看看这个小提琴 http jsfiddle net mattball nWWSa http jsfiddle net mattball nWWSa var lis ul innerfade gt li function fadeThemOu
  • 适用于商品 Linux 存储场的最佳分布式文件系统 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有很多闲置的英特尔 Linux 服务器 数百台 并且希望将它们用于 Web 托管和文件共享环境中的分布式文件系统 这不适用于 HPC 应用程序
  • 如何按顺序获取int中的每个数字?

    我有一个整数 int iNums 12476 我想从中获取每个数字作为整数 就像是 foreach iNum in iNums printf i iNum 所以输出将是 1 2 4 7 6 但我需要每个数字作为int not as char
  • 在类中找不到 main(String[]) 方法

    我收到以下错误 在类中找不到 main String 方法 import java util class Coor int x y w Coor int x int y int w this x x this y y this w w cl
  • gtkmm 的 CMake 错误

    我正在使用 Debian 8 并安装了 libgtkmm 3 0 以及 dev 现在我有一个使用 gtkmm 的非常简单的程序 基本上是一个 Hello World 主要 cpp include include BrowserWindow