Chciałem pouczyć się C++. Mam pomysł na aplikację , na Linuksa, i chciałbym pomału zacząć ją sobie pisać. Na maszynie wirtualnej zainstalowałem Linux Mint 19 oraz Code::Blocks oraz g++-7 i g++-8. Właśnie te wersje dlatego, że jak się doczytałem są zgodne z C++17. Chcę wykorzystać ten własnie standard , dlatego że ma coś co się nazywa filesystem. No i jak się uczyć to na najnowszym sprzęcie. Niestety , pomimo przejrzenia całego internetu ( dzwoniłem do Chucka ) nie udało mi się zmusić tegoż IDE do skompilowania typowego przykładu. Przykład jest wzięty gdzieś z oficjalnych źródeł od standardu C++17. Na windowsie , Visual Studio 2017 przełknęło, skompilowało i uruchomiło ten przykład bezbłędnie.
W załącznikach screeny z błędami kompilacji oraz z ustawieniami kompilatora, dodatkowymi parametrami oraz ścieżkami.
PS. To IDE bo tak ... zobaczyłem je i mi się spodobało i mam chęć go poużywać, Eclipse jakieś problemy stwarza których nie rozumiem i nie mam chęci się z nim kopać.
PS2. Tak, znam biblioteki Boost oraz Dirent, ale nie chcę ich używać, wolę coś natywnego co już istnieje w standardzie.
[Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
- acid3
- User
- Posty: 466
- Rejestracja: czwartek 03 wrz 2015, 22:42
- Lokalizacja: Kłopoty-Stanisławy
- Kontaktowanie:
[Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
Spróbuj skompilować kod
poleceniem
u mnie działa (Mint 18.3)
Kod: Zaznacz cały
#include <string>
#include <iostream>
#include <experimental/filesystem>
using namespace std;
namespace fs = std::experimental::filesystem;
int main() {
string path = fs::current_path();
for(auto & p : fs::directory_iterator(path)) {
cout << p << endl;
}
int n;
cin >> n;
}
poleceniem
Kod: Zaznacz cały
g++ -std=c++17 main.cpp -o main -lstdc++fs
./main
u mnie działa (Mint 18.3)
- acid3
- User
- Posty: 466
- Rejestracja: czwartek 03 wrz 2015, 22:42
- Lokalizacja: Kłopoty-Stanisławy
- Kontaktowanie:
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
Działa ! ( jakieś 10 minut temu tez z kolegą Antystatycznym podążaliśmy tą drogą )
Jeszcze tylko ożenienie tego C::B ...
Jeszcze tylko ożenienie tego C::B ...
- acid3
- User
- Posty: 466
- Rejestracja: czwartek 03 wrz 2015, 22:42
- Lokalizacja: Kłopoty-Stanisławy
- Kontaktowanie:
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
No i tak to się kończy ...
dodanie flagi kompilatora -std=c++17
oraz flagi -lstdc++fs
( nie wiem czy to jest prawidłowo zrobione, zgodnie ze sztuką , ale DZIAŁA i tylko to na obecną chwilę się liczy )
dodanie flagi kompilatora -std=c++17
oraz flagi -lstdc++fs
( nie wiem czy to jest prawidłowo zrobione, zgodnie ze sztuką , ale DZIAŁA i tylko to na obecną chwilę się liczy )
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- Antystatyczny
- Geek
- Posty: 1168
- Rejestracja: czwartek 03 wrz 2015, 22:02
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
No i super. Masz wybrany dialekt c++17 oraz linkujesz stdc++fs.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.
- mokrowski
- User
- Posty: 190
- Rejestracja: czwartek 08 paź 2015, 20:50
- Lokalizacja: Tam gdzie Centymetro
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
Ja jestem raczej "agnostyczny" jeśli chodzi o IDE. Używam kilku. Myślę że warto zwrócić uwagę na kilka istotnych kwestii.
Na Eclipse nie obrażał bym się tak szybko. C::B jest nieco ubogim IDE jeśli chodzi o kwestie refaktoryzacji kodu i utrzymanie większego projektu. Powinieneś mieć mocne przesłanki do tego by się przy nim upierać (np. wspaniała zgodność z wxWigdets). Do początkowych zabaw wystarcza, później jest kulą u nogi. Poza tym ma małe wsparcie jeśli chodzi o MCU (da się ale będzie walka) a Eclipse stał się standardem jeśli chodzi o wspieranie embedded. Co będzie dalej nikt nie wie w świetle działań firmy Oracle i chęci pobierania opłat za Java 11. Jeśli Cię stać, profesjonalnym narzędziem jest CLion (wersja próbna 30 dni dostępna).
Co do dystrybucji, nie wiem czy wiesz ale już dostępny jest kompilator gcc 8.2 (a 9.0 w wersji beta). Linux Mint, bazuje na Ubuntu LTS a ono z założenia jest nieco "zachowawcze" jeśli chodzi o nowoczesne narzędzia. gcc 8.2 wspiera już mechanizmy (niektóre) które mają wejść w C++20 poprzez -std=c++2a. Do testowania takich rzeczy polecam Fedorę (nie nie chcę otwierać dyskusji o wyższości konkretnych dystrybucji, mówię tylko jak jest ... w F28 jest dostępny gcc 8.1.1 i clang 6.0.1). Każda dystrybucja ma swoje ale.... Fedora z racji szybkości wydań, potrafi się wywrócić na update ale ja nie wymagam od niej stabilności tylko mniejszych problemów z nowoczesnymi narzędziami (maja być).
Jeśli kompilator wspiera w pełni c++17, powinieneś już mieć <filesystem> a nie <experimental/filesystem>. Jeśli taki kod Ci się skompiluje, możesz bezpiecznie ćwiczyć C++17. Jeśli nie, masz jeszcze narzędzia nie w pełni wspierające ten standard:
Na Eclipse nie obrażał bym się tak szybko. C::B jest nieco ubogim IDE jeśli chodzi o kwestie refaktoryzacji kodu i utrzymanie większego projektu. Powinieneś mieć mocne przesłanki do tego by się przy nim upierać (np. wspaniała zgodność z wxWigdets). Do początkowych zabaw wystarcza, później jest kulą u nogi. Poza tym ma małe wsparcie jeśli chodzi o MCU (da się ale będzie walka) a Eclipse stał się standardem jeśli chodzi o wspieranie embedded. Co będzie dalej nikt nie wie w świetle działań firmy Oracle i chęci pobierania opłat za Java 11. Jeśli Cię stać, profesjonalnym narzędziem jest CLion (wersja próbna 30 dni dostępna).
Co do dystrybucji, nie wiem czy wiesz ale już dostępny jest kompilator gcc 8.2 (a 9.0 w wersji beta). Linux Mint, bazuje na Ubuntu LTS a ono z założenia jest nieco "zachowawcze" jeśli chodzi o nowoczesne narzędzia. gcc 8.2 wspiera już mechanizmy (niektóre) które mają wejść w C++20 poprzez -std=c++2a. Do testowania takich rzeczy polecam Fedorę (nie nie chcę otwierać dyskusji o wyższości konkretnych dystrybucji, mówię tylko jak jest ... w F28 jest dostępny gcc 8.1.1 i clang 6.0.1). Każda dystrybucja ma swoje ale.... Fedora z racji szybkości wydań, potrafi się wywrócić na update ale ja nie wymagam od niej stabilności tylko mniejszych problemów z nowoczesnymi narzędziami (maja być).
Jeśli kompilator wspiera w pełni c++17, powinieneś już mieć <filesystem> a nie <experimental/filesystem>. Jeśli taki kod Ci się skompiluje, możesz bezpiecznie ćwiczyć C++17. Jeśli nie, masz jeszcze narzędzia nie w pełni wspierające ten standard:
Kod: Zaznacz cały
#include <string>
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main() {
string path = fs::current_path();
for(auto & p : fs::directory_iterator(path)) {
cout << p << endl;
}
int n;
cin >> n;
}
Kod: Zaznacz cały
g++ -std=c++17 -o prog prog.cpp -lstdc++fs
,,Myślenie nie jest łatwe, ale można się do niego przyzwyczaić" - Alan Alexander Milne: Kubuś Puchatek
- acid3
- User
- Posty: 466
- Rejestracja: czwartek 03 wrz 2015, 22:42
- Lokalizacja: Kłopoty-Stanisławy
- Kontaktowanie:
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
Tak na szybko, kompilacja za pomocą g++ nie powiodła się.
Natomiast to :
zadziałało bezbłędnie.
Czyli to oznacza że mogę normalnie korzystać z dobrodziejstw C++17 ?
PS. Po zainstalowaniu na VM Fedory 28 też nie zadziałało.
Natomiast to :
Kod: Zaznacz cały
g++-8 -std=c++17 -o prog main.cpp -lstdc++fs
Czyli to oznacza że mogę normalnie korzystać z dobrodziejstw C++17 ?
PS. Po zainstalowaniu na VM Fedory 28 też nie zadziałało.
- mokrowski
- User
- Posty: 190
- Rejestracja: czwartek 08 paź 2015, 20:50
- Lokalizacja: Tam gdzie Centymetro
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
No to wołaj kompilator jako g++-8 jeśli masz w dystrybucji. Na ten moment nawet powinno zadziałać -std=c++2a czyli elementy standardu c++20.
Co do kompilatora w F28 które ponoć nie działa, cóż ... pewnie to Cię nie pocieszy ale "u mnie działa"
Co do kompilatora w F28 które ponoć nie działa, cóż ... pewnie to Cię nie pocieszy ale "u mnie działa"
,,Myślenie nie jest łatwe, ale można się do niego przyzwyczaić" - Alan Alexander Milne: Kubuś Puchatek
- acid3
- User
- Posty: 466
- Rejestracja: czwartek 03 wrz 2015, 22:42
- Lokalizacja: Kłopoty-Stanisławy
- Kontaktowanie:
Re: [Code::Blocks] Jak na Linuksie uzywac dobrodziejstw C++17
Po ustawieniu w C::B w ustawieniach kompilatora na g++-8 działa jak należy.
Nie wiąże z tym IDE większych nadziei , ale nie znałem go całkowicie, więc pomyślałem że można by poużywać w celach naukowych.
Póki co na szczęście C++20 nie jest mi potrzebne, mam nadzieję, choć przyznaję nie bardzo w tej chwili nawet wiem co ono ma ciekawego.
Nie wiąże z tym IDE większych nadziei , ale nie znałem go całkowicie, więc pomyślałem że można by poużywać w celach naukowych.
Póki co na szczęście C++20 nie jest mi potrzebne, mam nadzieję, choć przyznaję nie bardzo w tej chwili nawet wiem co ono ma ciekawego.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości