Как скомпилировать проект с несколькими файлами в Sublime Text 3

181
22 апреля 2022, 05:20

Подскажите как я могу компилировать проекты в Sublime Text 3. Пытался настроить "Build System" файл, но безрезультатно.

Приведу пример, который у меня не получается скомпилировать. В папке D:\Test, есть 4 файла.

main.cpp

#include <iostream>
#include "test.h"
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    TestStruct test;
    test.show_info();
    return 0;
}

test.h

#ifndef TEST_H
#define TEST_H
#include <iostream>
using namespace std;
class TestStruct{
public:
    TestStruct(){
        cout << "counstructor" << endl;
    }
    void show_info();
};
#endif //TEST_H

test.cpp

#include "test.h"
void TestStruct::show_info(){
    cout << "message" << endl;
}

Четвертый файл это Makefile

all: main clean
main: main.o test.o
    g++ main.o test.o -o main
main.o: main.cpp
    g++ -c main.cpp
test.o: test.cpp test.h
    g++ -c test.cpp
clean:
    -del *.o $(BUILD_DIR)

Если убрать test.cpp и сделать реализацию в test.h файле, то программа будет компилироваться без проблем, но с реализацией test.cpp выдает примерно это:

D:\Test>doskey make=mingw32-make.exe d:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\7636~1\AppData\Local\Temp\cchKBpuW.o:main.cpp:(.text+0x34): undefined reference to `TestStruct::show_info()' collect2.exe: error: ld returned 1 exit status

Где первая строчка выводится потому, что я мудрил с make, у меня он просто не определялся в консоли, но сейчас все работает. И если я перейду через командную строку в папку D:\Test и затем напишу make, то скомпилирует файл main.exe, а все *.o удалятся.

Забыл добавить, что я компилирую проект при помощи горячих клавиш благодаря плагину Terminality.

Обновлено:

CPP_RUN.sublime-build

{
"cmd": ["g++.exe","-std=c++14", "${file}", "-o", "${file_base_name}.exe", "&&" , "${file_base_name}.exe<inputf.in>outputf.in"],
"shell":true,
"working_dir":"$file_path",
"selector":"source.cpp"
}

но, при сборке я так же получаю ошибку

D:\Test>doskey make=mingw32-make.exe �� 㤠���� ���� 㪠����� 䠩�. [Finished in 1.0s with exit code 1] [cmd: ['g++.exe', '-std=c++14', 'D:\Test\main.cpp', '-o', 'main.exe', '&&', 'main.exe<inputf.in>outputf.in']] [dir: D:\Test]

Я думаю проще не найти ошибку в моих решениях, а подсказать как сделать все правильно с нуля.

Обновлено:

Подскажите кто знает, как реализовать то что я написал ниже.

При нажатии например на CTRL+R в консоли (которую мы не видим) вызывается команда make, которая соберет проект, а потом вызывалась команда открытия exe файла, который называется так же как файл в котором находится main. В моем случае main.exe. И все по факту это то, что нужно будет.

READ ALSO
Чтение/запись в Эксель &quot;xlsx&quot; в рамках xml/zip

Чтение/запись в Эксель "xlsx" в рамках xml/zip

Подскажите пожалуйста по записи и чтению данных из ексель формата xlsx:

112
Метод Хоару быстрая сортировка С++

Метод Хоару быстрая сортировка С++

Нужно сортировать рандомно сгенерированные числа через очередьТ

187
Написать формулу по вычислению площади многоугольника с определенным рядом условий

Написать формулу по вычислению площади многоугольника с определенным рядом условий

Я новичок в плюсахВводится количество вершин многоугольника

163