How do I make clion work with following make and pkg-config?

拟墨画扇 提交于 2021-01-28 09:57:07

问题


I have following simple C program which notifies me on which workspace I am in Xfce. I can successfully compile it and use it with a command

gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wsnd pkg-config --cflags --libs libnotify --libs libwnck-1.0 wsn.c

But how would I set Cmake configuration file so clion would compile it also? How do I use pkg-config with Cmake?

#include <libnotify/notify.h>
#include <libwnck-3.0/libwnck/libwnck.h>

#define N_SUMMARY "Workspace Changed"
#define N_ICON    "dialog-information"
#define N_APPNAME "workspace switch notifier"
#define N_TIMEOUT 2000 /*2000ms = 2s */

static NotifyNotification * m_notification = NULL;

static void
on_active_workspace_changed (WnckScreen    *screen,
                             WnckWorkspace *space,
                             gpointer      data)
{

    WnckWorkspace * active_workspace = wnck_screen_get_active_workspace(screen);
    const char * w_name = wnck_workspace_get_name (active_workspace);

    notify_notification_update(m_notification, N_SUMMARY, w_name, N_ICON);
    notify_notification_show(m_notification, NULL);
}

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

    GMainLoop *loop;
    WnckScreen *screen;

    if (notify_init(N_APPNAME))
        m_notification = notify_notification_new(N_SUMMARY, "" , N_ICON);
    else
        fprintf(stderr, "Failed to init notifications\n");
    notify_notification_set_timeout(m_notification, N_TIMEOUT);

    gdk_init (&argc, &argv);

    loop = g_main_loop_new (NULL, FALSE);
    screen = wnck_screen_get_default();

    g_signal_connect (screen, "active-workspace-changed",
                      G_CALLBACK (on_active_workspace_changed), NULL);

    g_main_loop_run (loop);

    g_main_loop_unref (loop);

    return 0;
}

回答1:


Following CMakeLists.txt configuration made it work. I can follow function calls in source code now also.

cmake_minimum_required(VERSION 3.12)
project(xfce_workspace_notifier C)
add_compile_definitions(WNCK_I_KNOW_THIS_IS_UNSTABLE)

set(CMAKE_C_STANDARD 99)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIB_NOTIFY REQUIRED libnotify)
pkg_check_modules(LIB_WNCK1 REQUIRED libwnck-1.0)
pkg_check_modules(GLIB2 REQUIRED glib-2.0)

file(GLOB SRC "main.c")
add_executable(xfce_workspace_notifier ${SRC})

target_link_libraries(xfce_workspace_notifier PUBLIC ${GLIB_LIBRARIES})
target_include_directories(xfce_workspace_notifier PUBLIC ${GLIB_INCLUDE_DIRS})

target_link_libraries(xfce_workspace_notifier PUBLIC ${WNCK_LIBRARIES})
target_include_directories(xfce_workspace_notifier PUBLIC ${WNCK_INCLUDE_DIRS})

target_link_libraries(xfce_workspace_notifier PUBLIC ${NOTIFY_LIBRARIES})
target_include_directories(xfce_workspace_notifier PUBLIC ${NOTIFY_INCLUDE_DIRS})


来源:https://stackoverflow.com/questions/53116037/how-do-i-make-clion-work-with-following-make-and-pkg-config

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!