使用eclipse

时间:2016-03-31 22:05:08

标签: c eclipse windows gtk pkg-config

我的问题似乎很简单:我希望能够在C中创建一个带有简单GUI的简单程序(如果可能的话,在Windows上)。 我目前的环境是eclipse IDE,msys2与windows 10上的mingw64工具链。 我想在eclipse中使用pkg-config来避免“硬编码”我的所有库,为此我首先尝试了eclipse的pkg-config插件(当我创建一个新项目时崩溃,空指针异常)。然后我尝试在对GCC的调用中插入pkg-config命令。为此我必须使用powershell,因为cmd不允许它。 但即使在powershell上,我也无法使用它,因为pkg-config返回我的字符串被gcc视为命令。 以下是eclipse用于编译的内容:

powershell gcc -O0 -g3 -Wall -c -fmessage-length=0 --std=c99 $(pkg-config-win --cflags --libs gtk+-3.0) -o main.o "..\\main.c"

以下是它给我的回报:

gcc.exe: error: unrecognized command line option '-mms-bitfields -pthread -mms-bitfields -IC:/msys64/mingw64/include/gtk-3.0 [...]'

然后我尝试删除pkg-config的--cflags: eclipse使用的命令:

powershell gcc $(pkg-config-win --libs gtk+-3.0) -o Test.exe main.o -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -lwinmm -ldwmapi -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl 

这是结果(相同行的8倍)。

gcc.exe: error: .0: No such file or directory

我尝试过几十种不同的东西,但都没有。

所以我的主要问题是:

  1. 有没有一种简单的方法可以解决这个问题?
  2. 我做的是正确的事情(日食是为了做这些事吗?)
  3. 如果没有,我该怎么办? (更改IDE?更改GUI库,...)
  4. 我希望你能够帮助我,我对你可能给予的可能性持开放态度。如果我在某些方面不清楚或者没有提供足够的信息,请原谅我,我会尽快回复你的问题:p

1 个答案:

答案 0 :(得分:0)

So my main questions are:
  1.Is there a simple way to solve this problem?

是,

虽然这是一个老问题,但值得回答。注释中正确注明的问题是$(pkg-config-win --cflags --libs gtk+-3.0)的输出将作为一个长字符串返回,gcc无法识别它。要解决此问题,您只需将pkg-config的输出指定为数组,并将数组变量与gcc一起使用,例如

PS> [string[]] $cflags = $(pkg-config-win --cflags --libs gtk+-3.0)
PS> gcc -O0 -g3 -Wall -c -fmessage-length=0 --std=c99 $cflags -o main.o ..\main.c
然后

gcc会将$cflags中包含的每个选项视为单个参数(引用会自动处理,因此嵌入式'-''.'不会导致PowerShell出现问题)