我正在尝试使用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的结果存储到变量中,然后使用该变量,而不是使用反向运算符?