I'm trying to write a simple C program using VS code; there are 3 files in my program.
"main.c", "test.c", "test.h"
the "main.c" file is located in the workspace directory and "test.h" file is in the header folder and this folder is located in the workspace directory. I want to include "test.h" in "main.c" file but I get the following error:
"fatal error: test.h: No such file or directory".
I have searched a lot and try many solutions but I could not solve this problem. I will appreciate any kind of help.
this is "c_cpp_properties.json" file:
{
"configurations": [{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}\\header"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "8.1",
"compilerPath": "C:\\mingw\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}],
"version": 4
}
this is "task.json" file:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: gcc.exe build active file",
"command": "C:\\mingw\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"${workspaceFolder}\\source\\test.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\mingw\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}
Related
i'm using the microsoft extension on vscode to compile C, the problem is, with one file .c, ok, but when i include some lib, like conio.c, i need to tell manually to compile this file too putting the name of the file in the tasks.json, i want to do this automatically, but i can't add any "pattern" in tasks.json, and i don't know if .json runs regex, thanks in advance! Basically i want to match all .c that i'm using in the main program.
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe arquivo de build ativo",
"command": "gcc",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}" ---add name of file to here compile---,
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Tarefa gerada pelo Depurador."
}
],
"version": "2.0.0"
}
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe arquivo de build ativo",
"command": "gcc",
"args": [
"-fdiagnostics-color=always",
"-g",
"${fileDirname}\\**.c",
"${fileDirname}\\**.h",
"-o",
"${fileDirname}\\bin\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Tarefa gerada pelo Depurador."
}
],
"version": "2.0.0"
}
How do I include commands for gcc in VS Code? The project compiles without any error if i type the following command in the terminal gcc main.c pkg-config --cflags --libs gtk + -3.0 -export-dynamic. But I have no idea how to configure this in VS Code.
I tried to include everything in c_cpp_properties.json without any luck.
{
"configurations": [
{
"name": "linux-gcc-x64",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/gtk-3.0",
"/usr/include/glib-2.0"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "linux-gcc-x64",
"compilerArgs": [
"-Wall",
"-Wextra",
"-Wpedantic",
"pkg-config --cflags --libs gtk+-3.0`",
"-export-dynamic"
],
"defines": [
""
]
}
],
"version": 4
}
Problem solved!
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc build active file",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"`pkg-config",
"--cflags",
"--libs",
"gtk+-3.0`",
"-export-dynamic"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
Any tips on how to get rid of the following error message?
#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit (/home/malte/Projects/GtkButton/main/src/main.c).
My C project need use MySQL, so there is code:
#include "mysql.h"
I just couldn't find out where should I add include path, or which key point I missed, I think I have get it done already. When I debug with (Windows)启动, it's works fine. But when I choose "gcc.exe", it always get "mysql.h: no such file or directory", please help!
I tried everything I can but still get this error.
this is my c_cpp_properties.json:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/Program Files/MySQL/MySQL Server 8.0/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:/Program Files/mingw64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
this is my launch.json:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe build active file"
},
{
....................
},
]
}
this is my task.json:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "C:\\Program Files\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-I",
"C:/Program Files/MySQL/MySQL Server 8.0/include",
"-L",
"C:/Program Files/MySQL/MySQL Server 8.0/lib",
"-llibmysql",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\Program Files\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: \"C:\\Program Files\\mingw64\\bin\\gcc.exe\""
}
]
}
The first thing I would try is hiding those spaces in your paths; terminal will read them as the end of an argument and start of a new one.
For example, in your launch.json, you have
"options": {
"cwd": "C:\\Program Files\\mingw64\\bin"
},
which I would try editing to
"options": {
"cwd": "C:\\\"Program Files\"\\mingw64\\bin"
},
Currently, terminal sees the path "C:\Program" and interprets "Files\mingw64\bin" as some weird argument that it probably just ignores. Your windows debugger may be smart enough to figure out that's wrong, but terminal operates pretty literally.
With "Program Files" contained in quotes (with escape chars), terminal should be able to read the whole path. Try that everywhere you have spaces in your paths and see if it helps.
I'm getting the following fatal error while trying to include glib.h into a project. mingw gcc cant find glib.h.
fatal error: glib.h: No such file or directory
I've isolated the issue in a simple helloworld.c file.
Upon Ctrl-Shift-B to build, I get this.
I've also updated my includePath in my c_cpp_properties.json file per the instructions I read here.
Does anyone have any ideas of what I should look into or do to resolve this? I have spent many hours but not made any progress on this. :(
helloworld.c is:
#include <stdio.h>
#include <glib.h>
void main() {
printf("Hello World!");
char c = getchar();
}
c_cpp_properties.json is:
{
"configurations": [
{
"name": "MingGW",
"includePath": [
"${workspaceFolder}/**",
"C:\\cryptolibs\\msys2-64\\mingw64\\include\\glib-2.0",
"C:\\cryptolibs\\msys2-64\\mingw64\\lib\\glib-2.0\\include",
"C:\\cryptolibs\\pbc-0.5.14\\include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:\\MinGW\\bin\\g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"${workspaceFolder}",
"C:\\cryptolibs\\msys2-64\\mingw64\\include\\glib-2.0",
"C:\\cryptolibs\\msys2-64\\mingw64\\lib\\glib-2.0\\include",
"C:\\cryptolibs\\pbc-0.5.14\\include"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
launch.json is:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": ""
}
]
}
tasks.json is:
{
"tasks": [
{
"type": "shell",
"label": "C/C++: gcc.exe build active file",
"command": "C:\\MinGW\\bin\\gcc.exe",
"args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
To be able to use glib.h you need to have glib2 on your system.
If you have a shell (like MSYS2) normally you can get the compiler flags with:
pkg-config --cflags glib-2.0
and the linker flags with:
pkg-config --libs glib-2.0
On my MSYS2 system for example this returns:
-LD:/Prog/winlibs64-10.2.0/custombuilt/lib -lglib-2.0 -lintl
and
-mms-bitfields -ID:/Prog/winlibs64-10.2.0/custombuilt/include/glib-2.0 -ID:/Prog/winlibs64-10.2.0/custombuilt/lib/glib-2.0/include -ID:/Prog/winlibs64-10.2.0/custombuilt/include
respectively.
How can I add an external C library in Visual Studio Code?
I read How can I include a needed C library using GCC? and tried:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "build",
"command": "C:\\MinGW\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-L \\C:\\MinGW\\lib",
"-l libws2_32.a"
],
"options": {
"cwd": "C:\\MinGW\\bin"
},
"problemMatcher": [
"$gcc"
]
}
]
But I got
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -l libws2_32.a
collect2.exe: error: ld returned 1 exit status
And I installed GCC in folder C:\MinGW.