Как запустить gtk приложения cpp в VSCode?

#c #windows #visual-studio-code #visual-c #gtk

#c #Windows #visual-studio-code #visual-c #gtk

Вопрос:

Я работаю с приложением gtk в cpp, я хочу интеграцию Bastler Pylon с gtk, и я обнаружил, что в результате многочисленных исследований приложение Gtk использует компилятор MinGW, а Pylon использует компилятор MSVC. Моя проблема заключается в запуске кода gtk в среде разработки vscode, я никогда раньше не использовал vscode. Я обычно использую текстовый редактор sublime вubuntu и я хочу выше интеграции в Windows….

ниже приведены мои четыре файловые структуры…

c_cpp_properties.json

 {
    "configurations": [
        {
            "name": "Gtk_dev",
            "includePath": [
                "${workspaceFolder}/**",
                "C:/msys64/mingw64/include/**",
                "C:/msys64/mingw64/lib/glib-2.0/include"
                
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:/msys64/mingw64/bin/gcc.exe",
            "cStandard": "gnu17",
            "cppStandard": "gnu  14",
            "intelliSenseMode": "gcc-x64",
            "compilerArgs": [],
            "browse": {
                "limitSymbolsToIncludedHeaders": false,
                "path": []
            }
        }
    ],
    "version": 4
}
 

запустите файл .json

 {
    
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g  .exe - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "C:\msys64\mingw64\bin",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\msys64\mingw64\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C  : g  .exe build active file"
        }
    ]
}
 

tasks.json

 {
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "C/C  : gcc.exe build active file",
            "command": "g  ",
            "args": [
                "-g",
                "-pthread",
                "-mms-bitfields",
                "-IC:/msys64/mingw64/include/gtk-3.0",
                "-IC:/msys64/mingw64/include/cairo",
                "-IC:/msys64/mingw64/include",
                "-IC:/msys64/mingw64/include/pango-1.0",
                "-IC:/msys64/mingw64/include/fribidi",
                "-IC:/msys64/mingw64/include/atk-1.0",
                "-IC:/msys64/mingw64/include/lzo",
                "-IC:/msys64/mingw64/include/freetype2",
                "-IC:/msys64/mingw64/include/libpng16",
                "-IC:/msys64/mingw64/include/harfbuzz",
                "-IC:/msys64/mingw64/include/pixman-1",
                "-IC:/msys64/mingw64/include/gdk-pixbuf-2.0",
                "-IC:/msys64/mingw64/include/glib-2.0",
                "-IC:/msys64/mingw64/lib/glib-2.0/include",
                "${C:/msys64/mingw64/bin/g  }",
                "-LC:/mingw64/lib",
                "-lgtk-3",
                "-lgdk-3",
                "-lz",
                "-lgdi32",
                "-limm32",
                "-lshell32",
                "-lole32",
                "-luuid",
                "-lwinmm",
                "-ldwmapi",
                "-lsetupapi",
                "-lcfgmgr32",
                "-lpangowin32-1.0",
                "-lpangocairo-1.0",
                "-lpango-1.0",
                "-lharfbuzz",
                "-latk-1.0",
                "-lcairo-gobject",
                "-lcairo",
                "-lgdk_pixbuf-2.0",
                "-lgio-2.0",
                "-lgobject-2.0",
                "-lglib-2.0",
                "-lintl",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "C:/msys64/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "type": "cppbuild",
            "label": "C/C  : g  .exe build active file",
            "command": "C:\msys64\mingw64\bin\g  .exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\msys64\mingw64\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: C:\msys64\mingw64\bin\g  .exe"
        }
    ]
}
 

Ошибка showing……………..by Нажатие для компиляции и запуска (ctr shift B)..Основная проблема заключается в том, что нет упоминания, в каком файле есть ошибка

 g  .exe: error: .0: No such file or directory
g  .exe: error: .0: No such file or directory
g  .exe: error: .0: No such file or directory
g  .exe: error: .0: No such file or directory
.....some included files output.....
 

Ответ №1:

Вчера я столкнулся с той же ошибкой. Сообщение об ошибке на самом деле намекает на то, что не так (.0). Некоторые из связанных библиотек (-l) имеют .0 в своем имени, что кажется проблемой (по крайней мере, в Windows). Помещение соответствующих библиотек в одинарные кавычки делает трюк:

tasks.json

 [...]
"-lcfgmgr32",
"'-lpangowin32-1.0'",
"'-lpangocairo-1.0'",
"'-lpango-1.0'",
"-lharfbuzz",
"'-latk-1.0'",
"-lcairo-gobject",
"-lcairo",
"'-lgdk_pixbuf-2.0'",
"'-lgio-2.0'",
"'-lgobject-2.0'",
"'-lglib-2.0'",
"-lintl",
[...]