簡體   English   中英

配置CLion以處理gtk_builder信號

[英]Configure CLion to handle gtk_builder signals

我正在嘗試將使用Glade制成的GTK小部件的信號與gtk_builder_connect_signals()連接起來 ,正如文檔所述,此功能要求程序使用-Wl,-export -Wl,--export-dynamic Cflags進行編譯,並與gmodule-export-2.0鏈接gmodule-export-2.0

使用以下命令編譯此代碼成功。

/*Command : gcc sample.c  -Wall -Wextra -Wl,--export-dynamic `pkg-config --cflags --libs gtk+-3.0 gmodule-export-2.0` -o sample */
#include <gtk/gtk.h>

void add_etdnts(GtkWidget *widget,gpointer data){
   g_print("function succefully called");
}

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

 GtkWidget *window;
 GError *error = NULL;

 gtk_init(&argc,&argv);

 builder = gtk_builder_new();

 if(! gtk_builder_add_from_file(builder,"style.glade",&error)){
    g_warning("%s",error->message);
    g_free(error);
    return  1;
 }
 window = GTK_WIDGET(gtk_builder_get_object(builder,"window"));
 gtk_builder_connect_signals(builder,NULL);

 g_object_unref( G_OBJECT( builder ) );

 gtk_widget_show( window );

 //Start main loop
 gtk_main();
 return 0;
}

但是由於某些原因,即使在“ CMakeLists.txt”中添加以下行后,我也無法在CLion IDE(LINUX)下對其進行編譯

cmake_minimum_required(VERSION 3.6)
project(UI)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
find_package(GTK 3 REQUIRED gtk)

if(GTK3_FOUND)
 include_directories(${GTK3_INCLUDE_DIRS})
 set(SOURCE_FILES main.c main.h )
 add_executable(UI ${SOURCE_FILES})
 target_link_libraries(UI ${GTK3_LIBRARIES})

    ############# something is wrong here ##############
 set(CMAKE_CXX_COMPILER "pkg-config --cflags --libs gtk+-3.0 gmodule-2.0")
 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} pkg-config --libs gtk+-3.0 gmodule-2.0")
endif()

構建時出現錯誤

set(CMAKE_CXX_COMPILER "pkg-config --cflags --libs gtk+-3.0 gmodule-2.0")

這沒有道理:您已將pkg-config設置為c ++編譯器。

在CMake中使用pkg-config支持

find_package(PkgConfig)
pkg_check_modules(GTK REQUIRED gtk+-3.0 gmodule-2.0)
...
target_link_libraries(UI ${GTK_LIBRARIES})
target_include_directories(UI ${GTK_INCLUDE_DIRS})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM