[英]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.