Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makefile_added #1

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Makefile_added #1

wants to merge 4 commits into from

Conversation

madza93
Copy link

@madza93 madza93 commented Jan 18, 2019

No description provided.

Copy link
Owner

@ziobron ziobron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skomentowane bezpośrednio w pliku Makefile. W razie niejasności pytaj :)

Makefile Outdated
CC=g++
CFLAGS=-Wall -Wextra -Wpedantic -Werror -Iincludes
SOURCES=debug release
OBJECTS=*cpp -std=c++17
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-std=c++17 przerzuć do CFLAGS.
Zwyczajowo też zmienna o nazwie CFLAGS odnosi się do języka C. W C++ nazywa się ją CXXFLAGS.
CC podobnie stosuje się w C, a w C++ nazywa się ją CXX, więc możesz zmienić te nazwy :)

Pod zmienną OBJECTS umieszcza się pliki obiektowe, czyli te które są po etapie kompilacji, z rozszerzeniem* .o.
W zmiennej SOURCES umieszcza się pliki *.cpp

Makefile Outdated
all: $(SOURCES)

debug: *.cpp includes/*.hpp
$(CC) $(OBJECTS) $(CFLAGS) -g -o debug
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Użyj też proszę zmiennych $@ i $< zarówno w celu debug jak i w release
https://stackoverflow.com/questions/3220277/what-do-the-makefile-symbols-and-mean

Copy link
Owner

@ziobron ziobron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Już jest coraz bliżej prawidłowego rozwiązania :-) jeszcze tylko drobne poprawki.

Makefile Outdated
@@ -0,0 +1,17 @@
CXX=g++
CXXFLAGS=-Wall -Wextra -Wpedantic -Werror -Iincludes -std=c++17
$<=debug release
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zmiennej $&lt; nie musisz definiować. Ta zmienna jest automatycznie dostępna w każdym celu i oznacza pierwszy element z listy zależności, czyli zarówno dla debug jak i release będzie ona miała wartość *.cpp, a więc może zastąpić zmienną $(SOURCES), która tak naprawdę może trafić na listę zależności właśnie :-)
Zmienną $@ używasz poprawnie :)

Makefile Outdated
CXX=g++
CXXFLAGS=-Wall -Wextra -Wpedantic -Werror -Iincludes -std=c++17
$<=debug release
SOURCES=*cpp
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aby było w pełni poprawnie to brakuje Ci kropki - *.cpp. Bez tego do zmiennej SOURCES załapałby się np taki plik jak hellocpp

@ziobron
Copy link
Owner

ziobron commented Jan 20, 2019

Hej, zobacz zmiany Martyny: https://github.com/LordLukin/modern_cpp/pull/2/files
O coś takiego chodzi ;)

Copy link
Owner

@ziobron ziobron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Już cele debug i release powinny przy takim kodzie działać :)
Jeszcze all i clean wymagają poprawy, bo używasz tam $<, które tak naprawdę można użyć w debug i release, ale o nie nie będę się już czepiał.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants