我如何在我使用cmake的项目中包含glib

问题描述

代码

#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include <math.h>
#include <ctype.h>
#include <driver.hpp>
#include <decrypt_util.hpp>
#include <encrypt_util.hpp>
#include <util.hpp>

GtkWidget     *window1;
GtkWidget     *fixed1;
GtkWidget     *label1;
GtkWidget     *button1;
GtkWidget     *decryptbt;
GtkBuilder    *builder;





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

  gtk_init(&argc,&argv);

  builder = gtk_builder_new_from_file ("Attempt.glade");
  //Connects glade file with C++ code
  window1 = GTK_WIDGET(gtk_builder_get_object(builder,"window1"));
  //Creates pop up window,window is defined as a widget.
  g_signal_connect(window1,"destroy",G_CALLBACK(gtk_main_quit),NULL);
  //Makes the window x stop the program from running further
  gtk_builder_connect_signals(builder,NULL);
  //Connects signals from gui to code,on button clicked and GetCommandLineA

  fixed1 = GTK_WIDGET(gtk_builder_get_object(builder,"fixed1"));
  button1 = GTK_WIDGET(gtk_builder_get_object(builder,"button1"));
  decryptbt = GTK_WIDGET(gtk_builder_get_object(builder,"decryptbt"));
  label1 = GTK_WIDGET(gtk_builder_get_object(builder,"label1"));

  gtk_widget_show(window1);

  gtk_main();

  return EXIT_SUCCESS;
}

void on_button1_clicked (gtkbutton *b){
  gtk_label_set_text (GTK_LABEL(label1),(const gchar* ) "Hello World");
}

Cmakelists.list

cmake_minimum_required(VERSION 3.7...3.18)

if(${CMAKE_VERSION} VERSION_LESS 3.12)
    cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MInor_VERSION})
endif()

set(CMAKE_CXX_STANDARD 17)

project(ezip      VERSION 1.0
                  DESCRIPTION "AES encyption"
                  LANGUAGES CXX)

include_directories(include)

set(SOURCES src/driver.cpp src/util.cpp src/decrypt_util.cpp src/encrypt_util.cpp)
set(GUI src/stuff.cpp)
find_package(Boost 1.6 required COMPONENTS filesystem)
find_package (Eigen3 3.3 required NO_MODULE)
find_package(PkgConfig required)
find_package(GTK required gtk+-3.0)




include_directories(${GTK3_INCLUDE_Dirs})
include_directories(${CMAKE_SOURCE_DIR})

add_deFinitions(${GTK3_CFLAGS_OTHER})

add_executable(ezip ${SOURCES})
target_link_libraries(ezip PUBLIC Boost::filesystem)
target_link_libraries (ezip PUBLIC Eigen3::Eigen)
add_executable(GUI1.0 ${GUI})
target_link_libraries(GUI1.0 ${GTK3_LIBRARIES})

我尝试了许多target_link_libraries和find_package的变体,但没有一个起作用。我知道软件包名称是libglib2.0-0。但是除此之外,我还在黑暗中拍摄。任何信息都有帮助。我已经尝试仅使用GLIB2.0和其他变体来进行find_package,并且我有一个用于包位置的终端输出。如果那会有所帮助。我的错误代码

home/dellgato/ezip/src/stuff.cpp:6:10: Fatal error: gtk/gtk.h: No such file or directory
    6 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/GUI1.0.dir/build.make:82: CMakeFiles/GUI1.0.dir/src/stuff.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:124: CMakeFiles/GUI1.0.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)