Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用makefile中的wx配置信息设置编译器/链接器变量?_Makefile_Wxwidgets_Libs - Fatal编程技术网

如何使用makefile中的wx配置信息设置编译器/链接器变量?

如何使用makefile中的wx配置信息设置编译器/链接器变量?,makefile,wxwidgets,libs,Makefile,Wxwidgets,Libs,我有一个基于wxwidgets的应用程序,使用boost和pcre库。 在makefile中,我通常必须使用CXXFLAGS变量等来放置编译器和链接器路径 我写道: CXXFLAGS := -I. -I/path/boost/prod -I/path/pcre/include $(shell path/wxWidgets/bin/wx-config --unicode=yes --static=yes --cxxflags) -DPCRE_STATIC -O3 CPPFLAGS := -I.

我有一个基于wxwidgets的应用程序,使用boost和pcre库。 在makefile中,我通常必须使用CXXFLAGS变量等来放置编译器和链接器路径

我写道:

CXXFLAGS := -I. -I/path/boost/prod -I/path/pcre/include $(shell path/wxWidgets/bin/wx-config  --unicode=yes --static=yes --cxxflags) -DPCRE_STATIC -O3

CPPFLAGS := -I. -I/path/boost/prod -I/path/pcre/include $(shell path/wxWidgets/bin/wx-config --unicode=yes --static=yes --cppflags) -DPCRE_STATIC -O3

LDFLAGS := -L. -L/path/pcre/lib -L/path/wxWidgets/lib $(shell $path/wxWidgets/bin/wx-config --unicode=yes --static=yes --optional-libs html,aui,stc,xml,adv,core,base) -lpcre -O3
    EXEC_POST
根据我现在所做的,wx config告诉我需要哪些库


当我尝试链接我的编译文件时,链接器会因找不到库而出错,例如,库“gio-2.0”,它是wx config声明的库之一。我现在可以手动安装所有未找到的库,并且可以正常工作,但通常所有这些需要的libs都应该是wxwidgets的一部分。。。。我想我把上面编写的makefile配置中的部分搞糟了。你觉得怎么样?

你应该使用
--libs
而不是
--optional libs


另外,您不需要显式的
-L/path/wxWidgets/lib
,它已经由
wx config

-I
-L
输出,只接受单路径参数,而不是多路径参数。您需要在每个手动路径之前使用
-I/-L
。我使用了它们,我只是在上面用-I-L写了整个路径。将在上面进行编辑以使其更清晰。wxWidgets/lib目录中是否有gio-2.0库?仅仅因为wxWidgets依赖于它并不意味着它包含它。你确定wx配置状态libs不是它的一部分吗?如果是,我如何在makefile中声明在二进制文件中静态包含手动安装的库?我确信,如果wxWidgets需要glib提供的gio库,它可能不会将该库作为其源的一部分,而是依赖系统提供该库。如果是这种情况,那么您需要在构建时安装链接。在这种情况下,您只需要安装一个静态链接到它的库,与您想要静态链接到的任何其他库相同。我假设您的答案表明wxWidgets/lib路径下没有gio库?这是一个很好的提示,但不幸的是,它没有改变任何东西。我发现,在构建WXWidget时可以包含库。我将尝试一下。这种方法只取得了部分成功,因为有一些lib无法通过构建wxWidgets来包含。但我读到,它对编译wxWidgets的系统产生了影响。这意味着,为了避免链接问题,您应该在之前在要编译的同一系统上构建wxWidgets。这有意义吗?是的,如果您尝试使用
wx config
的系统没有创建此
wx config
的系统上的库,那么它肯定不会工作。