如何将 libwnck-3.0 集成到 autotools makefile.am 中
how to integrate libwnck-3.0 in autotools makefile.am
所有库和依赖项都正确安装在我的 Linux 盒子上。 我可以在一个简单的制作文件中使用 libwnck-3.0 编译我的测试程序:
LDFLAGS = -lX11 `pkg-config --cflags --libs gtkmm-3.0 libwnck-3.0 `
CPPFLAGS = -g -Wall -Wno-reorder -std=c++11 `pkg-config --cflags gtkmm-3.0 libwnck-3.0`
OUTPUTDIR = bin
# Macro that uses the backslash to extend to multiple lines.
OBJS =
main.o
$(NULL)
all:$(OBJS)
$(CC) $(CPPFLAGS) -o$(OUTPUTDIR)/$(APPNAME) $(OBJS) $(LDFLAGS)
main.o:main.cpp
$(CC) -I$(INCLUDE) $(CPPFLAGS) -c main.cpp
...
关键是要编译和链接libwnck-3.0,我需要使用: pkg-config --cflags -libs libwnck-3.0
G++ 编译器将毫无问题地编译和链接我的程序。但是我如何使用自动工具 Makefile.am 做到这一点?
以下是主要.cpp示例:
#define WNCK_I_KNOW_THIS_IS_UNSTABLE 1
#include <libwnck/libwnck.h>
#include <gtkmm.h>
int main(int argc, char *argv[])
{
gdk_init (&argc, &argv);
//check if libwnck works
WnckScreen* wnckscreen = wnck_screen_get_default();
Gtk::Main kit(argc, argv);
Gtk::Window mainWindow;
Gtk::Button button("Click here");
mainWindow.set_title("GTKmm Demo");
mainWindow.set_border_width(4);
mainWindow.set_default_size(200, 50);
mainWindow.add(button);
button.show();
Gtk::Main::run(mainWindow);
return 0;
}
在这里,自动制作测试 Makefile.am:
bin_PROGRAMS = testprogram
testprogram_SOURCES = main.cpp
# that is for gtkmm
testprogram_CPPFLAGS = $(GTKMM_CFLAGS)
# the include for libwnck-3.0
testprogram_CPPFLAGS += -I/usr/include/libwnck-3.0
testprogram_CPPFLAGS = $(GTKMM_CFLAGS)
# Linker flags
testprogram_LDFLAGS =`pkg-config --cflags --libs gtkmm-3.0 libwnck-3.0`
运行 autogen.sh、./configure 和 make 后,它编译 gtkmm,但我收到一个链接错误:取消定义对 wnck_screen_get_default() 的引用链接器找不到 libwnck-3.0 包。;o(
我尝试了很多变化,并在谷歌上花费了几天没有成功。
提前感谢您的任何帮助!
您应该使用
PKG_CHECK_MODULES
来检查所需库是否存在,只需使用 WNCK_LIBS
和 WNCK_CFLAGS
将其链接即可。
当然,您应该使用 _LDADD
,而不是_LDFLAGS
来传递库,因为它们具有不同的语义。
相关文章:
- 针对遗留库的链接:来自预制makefile的-lgfortranbegin
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何在使用Makefile构建后在cmd中运行该程序?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 如何在macOS上使用Makefile?
- Makefile 创建两个库 - 一个依赖于另一个
- 我将 Makefile 更改为 C++11 版本,但仍然收到列表初始值设定项错误
- Arduino-Makefile:编译器无法编译用户库 cpp 文件
- Makefile by ocaml 和 cpp 扩展名
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 从 Makefile 中的 $@ 获取文件名
- 如何使用 Makefile 使用 VTK 库编译项目?
- 在 Windows 10 下为 VTK 生成 Makefile 时,Qt mkspecs 的路径错误
- 如何在makefile中包含tensorflow c ++".so"文件?
- 有没有办法从Makefile访问VS Code c_cpp_properties.json文件中的定义
- 使用单个makefile编译C和C++
- 将makefile中的一个项中的多个类分组
- 如何将 libwnck-3.0 集成到 autotools makefile.am 中
- Autotools Automake生成的Makefile无效:使All-Am