Подскажите как я могу компилировать проекты в 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. И все по факту это то, что нужно будет.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите пожалуйста по записи и чтению данных из ексель формата xlsx:
Нужно сортировать рандомно сгенерированные числа через очередьТ
Я новичок в плюсахВводится количество вершин многоугольника