Programowanie w C++ (g++ linux curl, opengl, sfml, thread).
https://github.com/atomjoy/cpp/blob/master/cpp-wiki/0-install.md
https://github.com/atomjoy/cpp/blob/master/cpp-wiki/1-compile.md
# Kompiluj sudo g++ -c main.cpp # Lub sudo g++ -c main.cpp -o main.o # Plik wykonywalny g++ -o main-app main.o # Uruchom ./main-app
# Błędy, debugowanie -g -Wall -pedantic # Import bibliotek -std=c++11 -lpthread -lcurl -I. -L. # Import gtk `pkg-config --cflags --libs gtk+-3.0 gtkmm-3.0 giomm-2.4 gl` # Import SFML -lsfml-graphics -lsfml-window -lsfml-system
/* Kompilacja sudo g++ -c main.cpp -std=c++11 -lpthread sudo g++ -o main-app main.o -std=c++11 -lpthread ./main-app Lub sudo g++ main.cpp -std=c++11 -pthread -o main-app */ #include <iostream> #include <thread> #include <chrono> //This function will be called from a thread void call_from_thread(int n) { // std::this_thread::sleep_for(std::chrono::milliseconds(200)); std::this_thread::sleep_for(std::chrono::seconds(n)); std::cout << "Hello, World from thread " << n << std::endl; } int main() { std::cout << "Hello, World from main thread " << std::endl; //Launch a thread std::thread t1(call_from_thread, 1); std::thread t2(call_from_thread, 2); //Join the thread with the main thread t1.join(); t2.join(); std::cout << "Bye, from main thread " << std::endl; return 0; }
nano Makefile
CXX = g++ CXXFLAGS = -Wall -g -pedantic CXXCMD = -std=c++11 -lpthread -lcurl CXXSFML = -lsfml-graphics -lsfml-window -lsfml-system CXXGTK = `pkg-config --cflags --libs gtk+-3.0 gtkmm-3.0 giomm-2.4 gl` all: main-app main-app: main.o Date.o Num.o $(CXX) $(CXXFLAGS) $(CXXGTK) $(CXXSFML) $(CXXCMD) -o main-app main.o Date.o Num.o main.o: main.cpp Date.h Num.h $(CXX) $(CXXFLAGS) $(CXXGTK) $(CXXCMD) -c main.cpp Date.o: Date.h Num.o: Num.h clean: rm -rf main-app *.o
# Uruchom kompilację sudo make # Wyczyść sudo make clean
https://github.com/atomjoy/cpp/blob/master/.vscode/tasks.json
// See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format // ${fileDirname} // ${fileBasenameNoExtension} // ${workspaceFolderBasename} { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "BUILD NOW", "command": "g++", "args": [ "-g", "-Wall", "-pedantic", "${file}", "-o", "${fileBasenameNoExtension}" ], "problemMatcher": [], "group": "build" }, { "type": "shell", "label": "RUN NOW", "command": "./${fileBasenameNoExtension}", "dependsOn": [ "BUILD NOW" ], "problemMatcher": [] } ] }