gpt4 book ai didi

c - 如何让 clion 使用以下 make 和 pkg-config?

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:58 24 4
gpt4 key购买 nike

我有以下简单的 C 程序,它通知我我在 Xfce 中的工作区。我可以成功编译它并通过命令使用它

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

但我如何设置 Cmake 配置文件,以便 clion 也能编译它?如何在 Cmake 中使用 pkg-config?

#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;
}

最佳答案

遵循 CMakeLists.txt 配置使其工作。我现在也可以在源代码中跟踪函数调用。

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})

关于c - 如何让 clion 使用以下 make 和 pkg-config?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53116037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com