小编smo*_*smo的帖子

在cygwin/msys bash下使用`pkg-config`作为命令行参数

我正在尝试使用cygwin作为Windows下的构建环境.我对第三方软件包有一些依赖,例如GTK +.

通常当我在Linux下构建时,在我的Makefile中我可以添加对pkg-config的调用作为gcc的参数,所以它就像这样:

gcc example.c `pkg-config --libs --cflags gtk+-2.0` 

这在Linux下工作正常,但在cygwin中,我得到:

:Invalid argument
make: *** [example] Error 1

现在,我只是手动运行pkg-config并将输出粘贴到Makefile中,这真的很糟糕.有没有一种解决方法或解决此问题的好方法?

制造不是罪魁祸首.我可以复制并粘贴用于调用gcc的命令行,并且它本身将运行gcc,它将以":Invalid argument"停止.

我写了一个小的测试程序来打印出命令行参数:

for (i = 0; i < argc; i++)
    printf("'%s'\n", argv[i]);
Run Code Online (Sandbox Code Playgroud)

注意单引号.

$ pkg-config --libs gtk+-2.0
-Lc:/mingw/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpang
owin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-
2.0 -lglib-2.0 -lintl

贯穿测试程序:

$ ./t `pkg-config --libs gtk+-2.0`
'C:\cygwin\home\smo\pvm\src\t.exe'
'-Lc:/mingw/lib'
'-lgtk-win32-2.0'
'-lgdk-win32-2.0'
'-latk-1.0'
'-lgdk_pixbuf-2.0'
'-lpangowin32-1.0'
'-lgdi32'
'-lpangocairo-1.0'
'-lpango-1.0'
'-lcairo'
'-lgobject-2.0'
'-lgmodule-2.0'
'-lglib-2.0'
'-lintl'
'

注意最后一行的单引号.看起来argc比它应该更大,而argv [argc - 1]为null.在Linux上运行相同的测试没有这个结果.

也就是说,有一些方法可以让Makefile将pkg-config的结果存储到变量中,然后使用该变量,而不是使用反向运算符?

windows bash cygwin makefile pkg-config

4
推荐指数
1
解决办法
7503
查看次数

标签 统计

bash ×1

cygwin ×1

makefile ×1

pkg-config ×1

windows ×1