Каким образом в Visual Studio Code можно организовать компиляцию многофайлового проекта. К примеру имеется 3 файла: main.cpp
, Sum.cpp
, Sum.h
.
main.cpp
#include <iostream>
#include "sum.h"
using namespace std;
int main(int argc, char *argv[]) {
setlocale(LC_ALL, "ru");
cout << Sum(4, 5) << endl;
return EXIT_SUCCESS;
}
Sum.cpp
int Sum(int a, int b) {
return a + b;
}
Sum.h
int Sum(int a, int b);
Это компилирует таким образом g++ main.cpp Sum.cpp -o main
Вопрос: Как эту задачу делигировать непосредственно редактору. Просто я только могу провести компиляцию через консоль. Так же возможно коснуться вопроса компиляции с помощью Makefile(т.е привязка его для компиляции в редакторе), но важным является решение без его применения.
Данную задачу решил таким образом:
1. Создал файл c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/include" //дополнительно указал где мои heder файлы
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
{
"files.associations": {
"*.tpp": "cpp" //все tpp файлы
},
"terminal.integrated.shell.windows": "cmd.exe"
}
{
"version": "2.0.0",
"tasks": [
{ //Каждая задача выделяется одним блоком
"label": "Build C++ project",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
},
{ //<--- интересующая нас задача
"label": "Build & run C++ project", //Имя задача
"type": "shell",
"group": {
"kind": "test",
"isDefault": true
},
"command": "make", //Соответвенно сборка
"args": [
"run" //Аргумент для запуска
]
}
]
}
Согласно моей основной задачи справиться без Makefile, то поля command и args будут следующими:
"command": "g++",
"args": [
"-g", "-Wall", "main.cpp", "Sum.cpp", "-o", "main"
]
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug (gdb)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/main", //указал место где лежит мой собранный исходник
"preLaunchTask": "Build C++ project", //указал что перед запуском мы должны предварительно пересобрать проект
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
В общем, такая задача: Сделать окно и поместить в него некоторую невидимую область и сделать так, чтобы при приближении к этой области курсора...
Теперь, нужно объявить переменную b такого типа, который является специализацией a(В данном случае int, а если бы было A< double > a, то b должна была...