diff --git a/CMakeLists.txt b/CMakeLists.txt index 40bb7b2..3221c63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,21 @@ project(cpplab) cmake_minimum_required(VERSION 3.10) +FIND_PACKAGE(GTK) + +IF(GTK_FOUND) + INCLUDE_DIRECTORIES(${GTK_INCLUDE_DIR}) + ADD_EXECUTABLE(my_gtk_exe my_gtk_exe.cxx) + TARGET_LINK_LIBRARIES(my_gtk_exe ${GTK_LIBRARIES}) +ENDIF(GTK_FOUND) + + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) #Set c++ c11 version -set (CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 11) add_subdirectory(src) add_subdirectory(include) @@ -21,4 +30,5 @@ set(CPACK_GENERATOR "STGZ;TGZ;TZ;DEB") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CppLab") SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md") + include(CPack) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 35972e7..c83fd5c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,4 +2,5 @@ add_subdirectory(bmath) add_subdirectory(cpu) add_subdirectory(dtstruct) add_subdirectory(opengl) -add_subdirectory(misc) \ No newline at end of file +add_subdirectory(misc) +add_subdirectory(gui) \ No newline at end of file diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt new file mode 100644 index 0000000..c2916fc --- /dev/null +++ b/src/gui/CMakeLists.txt @@ -0,0 +1,12 @@ +FIND_PACKAGE(GTK) +FIND_PACKAGE(GDK) + +IF(GTK_FOUND) + message(STATUS "GTK found compiling GUI apps") + ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER}) + ADD_EXECUTABLE(gtk1 gtk1.cpp) + INCLUDE_DIRECTORIES(${GTK_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(gtk1 ${GTK_LIBRARIES}) +ELSE() + message(STATUS "GTK not found.") +ENDIF(GTK_FOUND) \ No newline at end of file diff --git a/src/gui/gtk1.cpp b/src/gui/gtk1.cpp new file mode 100644 index 0000000..8b10940 --- /dev/null +++ b/src/gui/gtk1.cpp @@ -0,0 +1,23 @@ +// Include gtk +//#include +#include +#include + +static void on_activate (GtkApplication *app) { + // Create a new window + GtkWidget *window = gtk_application_window_new (app); + // Create a new button + GtkWidget *button = gtk_button_new_with_label ("Hello, World!"); + // When the button is clicked, close the window passed as an argument + g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_close), window); + gtk_window_set_child (GTK_WINDOW (window), button); + gtk_window_present (GTK_WINDOW (window)); +} + +int main (int argc, char *argv[]) { + // Create a new application + GtkApplication *app = gtk_application_new ("com.example.GtkApplication", + G_APPLICATION_FLAGS_NONE); + g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL); + return g_application_run (G_APPLICATION (app), argc, argv); +}