Reputation: 83
Question Updated: I'm trying to build a c++ project on vscode using the C/C++ extension. The compiler complains about not finding header files (actually boost headers). I have included path to the root folder of boost, and Intellisense is also able to parse the header paths, but not the compiler. I checked the included header in my source is in the corresponding path in my filesystem. Is there any solution to make the compiler see the include headers?
This is my c_cpp_properties.json
file:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/Users/zz_ro/Documents/source/boost_1_70_0"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:/mingw/bin/g++.exe",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
and this is my helloworld.cpp
file:
#include "boost/math/constants/constants.hpp"
#include "boost/multiprecision/cpp_dec_float.hpp"
#include <iostream>
#include <limits>
int main()
{
using boost::multiprecision::cpp_dec_float_50;
cpp_dec_float_50 seventh = cpp_dec_float_50(1) / 7;
std::cout.precision(std::numeric_limits<cpp_dec_float_50>::digits10);
std::cout << seventh << std::endl;
}
And here is the compiler output:
helloworld.cpp:1:46: fatal error: boost/math/constants/constants.hpp: No such file or directory
#include "boost/math/constants/constants.hpp"
^
compilation terminated.
The terminal process terminated with exit code: 1
If I change my tasks.json
from
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g++",
"args": [
"-g",
"helloworld.cpp",
"-o",
"helloworld"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
to
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-IC:\\Users\\zz_ro\\Documents\\source\\boost_1_70_0",
"helloworld.cpp",
"-o",
"helloworld"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
by just manually passing the include path as an argument to g++.exe
and the compilation will go through. It confuses me that in the tutorial (vscode tutorial) there is no mention about manually inserting include path to g++.exe
via command line parameters, where all of these are supposed to be done by modifying the includePath variable in c_cpp_property.json
. Did I misunderstand the tutorial or I didn't set the includePath value properly?
Upvotes: 6
Views: 35941
Reputation: 275740
c_cpp properties is for intellisense. It is not used for compiling. The compiler is there only because it is queried to find the default include paths it uses for system headers.
The tasks defines how the build task runs.
Vscode doesn't connect the two.
Upvotes: 12