Makefile рдЙрджрд╛рд╣рд░рдг

рдореЗрдХрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдирд╛ рдХрднреА-рдХрднреА рд╕рд┐рд░рджрд░реНрдж рдмрди рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА 40-рд▓рд╛рдЗрди рдореЗрдХрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдирд╛ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИред



рдЪреЗрддрд╛рд╡рдиреА! рдЬреАрдПрдирдпреВ рдореЗрдХ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред





рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ:







рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ #include <dir1 / file1.h> рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд░реЛрдд рдореЗрдВ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ / рд╢рд╛рдорд┐рд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдорд╛рдирдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓реЗ:







рдЕрд░реНрдерд╛рддреН, рдмрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░реНрдп (рдЕрдиреБрдкреНрд░рдпреЛрдЧ) рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ (application_debug) рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ / рд░рд┐рд▓реАрдЬрд╝ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдФрд░ рдбреАрдмрдЧ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ / src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдмрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИред



рдЗрд╕ рдЖрд╢рдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

  1. root_include_dir: = рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
  2. root_source_dir: = src
  3. source_subdirs: = dir1 dir2
  4. compile_flags: = -Wall -MD -pipe
  5. link_flags: = -s -рдкрд╛рдЗрдк рдХрд░реЗрдВ
  6. рдкреБрд╕реНрддрдХрд╛рд▓рдп: = -рдПрд▓рдбреАрдПрд▓
  7. рд░рд┐рд╢реНрддреЗрджрд╛рд░_рдХрд┐рд╕рд╛рди_рджрд╛рд░: = $ ( рдЕрддрд┐рд░рд┐рдХреНрдд) .. / .., $ ( root_include_dir )
  8. рд░рд┐рд╢реНрддреЗрджрд╛рд░_рд╕реНрд░реЛрдд_рджрд┐рд░: = $ ( рдкрд░рд┐рд╢рд┐рд╖реНрдЯ .. / .. / $ ( root_source_dir ) / , $ ( source_subdirs ) )
  9. рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕_рдбрд╛рдпрд░: = $ ( рдРрдбрдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ $ ( root_source_dir ) / , $ ( source_suberirs ) )
  10. рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: = $ ( patsubst .. / .. /% , % , $ ( рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб $ ( Adduffix / * .c * , $ ) ( relation_source_dirs ) ) )
  11. рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: = $ ( рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: .cpp = .o )
  12. рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: = $ ( рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: .c = .o )
  13. рд╕рднреА: $ ( program_name )
  14. $ ( program_name ) : obj_dirs $ ( рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ )
  15. g ++ -o $ @ $ ( рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ ) $ ( link_flags ) $ ( рд▓рд╛рдЗрдмреНрд░реЗрд░реА )
  16. obj_dirs:
  17. mkdir -p $ ( Objects_dirs )
  18. VPATH: = .. / .. /
  19. % .o: % .cpp
  20. g ++ -o $ @ -c $ < $ ( compile_flags ) $ ( build_flags ) $ ( addprefix -I, $ ( рд░рд┐рд╢реНрддреЗрджрд╛рд░_рдХреАрд▓_рдбреАрд░реНрд╕ ) )
  21. % .o: % .рд╕реА
  22. g ++ -o $ @ -c $ < $ ( compile_flags ) $ ( build_flags ) $ ( addprefix -I, $ ( рд░рд┐рд╢реНрддреЗрджрд╛рд░_рдХреАрд▓_рдбреАрд░реНрд╕ ) )
  23. .PHONY: рд╕рд╛рдл
  24. рд╕рд╛рдл:
  25. rm -rf рдмрд┐рди obj
  26. $ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ ( рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб $ ( рдЕрддрд┐рд░рд┐рдХреНрдд) / * .d, $ ( рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕_рдбрд╛рдпрд░ ) )


рдЕрдкрдиреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЗрд╡рд▓ рд╕реНрд╡рдЪреНрдЫ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рдмрд┐рди рдФрд░ obj рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред

рдХрд╛рд░реНрдп рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдирд╛рдордХ рдПрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ:



mkdir -p bin mkdir -p obj mkdir -p obj/Release make --directory=./obj/Release --makefile=../../Makefile build_flags="-O2 -fomit-frame-pointer" program_name=../../bin/application
      
      







рдФрд░ рдбреАрдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдбреАрдмрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:



 mkdir -p bin mkdir -p obj mkdir -p obj/Debug make --directory=./obj/Debug --makefile=../../Makefile build_flags="-O0 -g3 -D_DEBUG" program_name=../../bin/application_debug
      
      







рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЪреБрдиреМрддреА рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХрддреНрд░ рд╣реЛрдЧреАред рдФрд░ рдЕрдм, рдкрд╣рд▓реА рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗред



рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдбреАрдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХреЙрд▓ рдХрд░реЗрдВред рдкрд╣рд▓реА рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рддреА рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ / obj / рдбреАрдмрдЧ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдЪреМрдереА рдкрдВрдХреНрддрд┐ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖, рдореЗрдХрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: build_flags (рдпрд╣ рдбреАрдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдХрд▓рди рдЭрдВрдбреЗ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ) рдФрд░ program_name (рдбреАрдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП) рдпрд╣ application_debug) рд╣реИред



рдЕрдЧрд▓рд╛, GNU рдореЗрдХ рдкреНрд▓реЗ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореЗрдХрдлрд╛рдЗрд▓ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ:



1: рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрдбрд╝ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



2: рд╕реНрд░реЛрдд рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



3: рд╕реНрд░реЛрдд рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



4: рдЖрдо рд╕рдВрдХрд▓рди рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред -MD рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди .d рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдирд╛рдо рдХреА рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реА рдлрд╛рдЗрд▓ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрддреА рд╣реИ, рдЬрд╣рд╛рдВ рд▓рдХреНрд╖реНрдп рд╕реНрд░реЛрдд рдХрд╛ рдирд╛рдо рд╣реИ, рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕рднреА рд╕реНрд░реЛрдд рдФрд░ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ #include рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реИред -рдкрд╛рдЗрдк рдзреНрд╡рдЬ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрдЬрд╛рдп рдЖрдИрдкреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рд╕рдВрдХрд▓рди рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред



5: рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред -s рд▓рд┐рдВрдХрд░ рдХреЛ .symtab, .strtab рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдореА ELF рдлрд╝рд╛рдЗрд▓ рд╕реЗ .debug * рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



6: рдПрдХ рдЪрд░ рдХреЛ рд▓реЗрдЖрдЙрдЯ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



8: рдорд╛рдирдХ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдореЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдРрд╕реЗ рдирд╛рдореЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдХрд▓рдХ рдХреЛ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ -I рд╕реНрд╡рд┐рдЪ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ ../../include, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред Addprefix рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЛ рдЙрди рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рджреВрд╕рд░рд╛ рддрд░реНрдХ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред



9: рдПрдХ рдЪрд░ рдХреЛ рд╕реНрд░реЛрдд рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдирд╛рдореЛрдВ рд╕реЗ рдпреБрдХреНрдд рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ: ../../src/ред ../../src/dir1 ../../src/dir1



10: рдПрдХ рдЪрд░ рдХреЛ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ / obj / рдбрд┐рдмрдЧ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛ / obj / Debug / src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЙрдк-рдирд╛рдо рд╕реЗ рдпреБрдХреНрдд рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ / src рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреА рдХреЙрдкреА рдХреЛ рдПрдиреНрдпреВрдорд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ: / src / dir1 src / dir2ред



11: рдПрдХ рдЪрд░ рдХреЛ рдореМрдЬреВрджрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рди рдирд╛рдо рдХреА * .c * (.cpp_ .c) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдпреБрдХреНрдд рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЪрд░рдгреЛрдВ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ: Adduffix рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ ../../src/./*.* ../../src/dir1/*.* ../../src/dir2/*.*ред рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд▓рд┐рдП рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдкреИрдЯрд░реНрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛: ..//src/./main.pp ../../src/dir1/file1. ../../src/dir1-file2.pp ../../src/dir2/file3.c ../../src/dir2/file4.cред Patsubsb рдлрд╝рдВрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рд╕реЗ ../../ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ (рдпрд╣ рджреВрд╕рд░реЗ рддрд░реНрдХ рдореЗрдВ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдФрд░% рд╡рд░реНрдгреЛрдВ рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ)ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ: src /./ main.pp src / dir1 / file1. src / dir1 / file2.pp src / dir2 / file3. src / dir2 / file4.ред



12: рдЪрд░ рдореЗрдВ .cpp рдХреЗ рд╕реНрд░реЛрдд рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде .o рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



13: рдЪрд░ рдХреЗ рд╕реНрд░реЛрдд рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░ рдореЗрдВ .c рдХреЛ .o рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



15: рдкрд╣рд▓рд╛ рдирд┐рдпрдо рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдЗрд╕рдХрд╛ рд▓рдХреНрд╖реНрдп рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп рдмрди рдЧрдпрд╛ред рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд╛рдо рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕реНрдерд┐рд░ (../../bin/application_debug рд╣реИ рдЬрдм рд╣рдордиреЗ рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИ)ред



17: рдкреНрд░рдореБрдЦ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╡рд┐рд╡рд░рдгред рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ: рдкрд░рд┐рдпреЛрдЬрдирд╛ / obj / рдбреАрдмрдЧ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ / src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреА рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВред



18: рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рдХреНрд╖реНрдп рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред



20: рдПрдХ рдирд┐рдпрдо рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ / obj / Debug / src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдЙрд╕рдХреЗ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИрдВред



21: рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЧрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ src /ред, Src / dir1 рдФрд░ src / dir2 рдмрдирд╛рдирд╛ рд╣реИред Mkdir рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ -p рд╕реНрд╡рд┐рдЪ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред



23: VPATH рдЪрд░ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ ../../ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред



25: рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд▓рдХреНрд╖реНрдп% .o рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реБрдП рд▓рдХреНрд╖реНрдп рд╣реИрдВ (рдпрд╛рдиреА, рдЗрдиреЛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо), рдФрд░ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛% .cpp рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд▓рдХреНрд╖реНрдп рд╣реИрдВ (рдпрд╛рдиреА, рдирд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ) рд╕реАрдкреАрдкреА)ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдорд╛рди рдирд╛рдо рдХрд╛ рдЕрд░реНрде рди рдХреЗрд╡рд▓ рдПрдХ рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдЧрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд╛рдо рднреА VPATH рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдкрд╣рд▓реЗ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд╛рдо src / dir1 / file2 рдФрд░ ../..src/dir1/file2 рдореЗрд▓ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ VPATH рдореЗрдВ ../../ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



26: C ++ рд╕реНрд░реЛрдд рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЙрд▓ред



28: рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд▓рдХреНрд╖реНрдп% .o рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реБрдП рд▓рдХреНрд╖реНрдп рд╣реИрдВред рдпрд╛рдиреА, рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо), рдФрд░ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛% .c рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд▓рдХреНрд╖реНрдп рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рдирд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ) рдЧ)ред рд░реЗрдЦрд╛ 23 рдореЗрдВ рд╕рдорд╛рдИред



29: C рд╕реНрд░реЛрдд рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред



31: рдХреБрдЫ рд╕рд╛рдл рд▓рдХреНрд╖реНрдп рдХреЛ рд╕рд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╕рд╛рд░ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рдирд╛рдо рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред



32: рдЕрдореВрд░реНрдд рд▓рдХреНрд╖реНрдп рдХреЛ рд╕рд╛рдл рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ред



33: рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ / рдмрд┐рди рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ / obj рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд╖реНрдЯ рдХрд░рдирд╛ рд╣реИред



36: рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ (рдПрдХреНрд╕рдЯреЗрдВрд╢рди .d) рдХреЗ рд╕рд╛рде рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ред рдореЗрдХ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рдРрд╕реА рдХреЛрдИ рдлрд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдкреБрди: рд╕рдВрдпреЛрдЬрди рдХрд░рдирд╛ рд╣реИред рджреВрд╕рд░реЗ рдФрд░ рдмрд╛рдж рдХреЗ рдмрд┐рд▓реНрдб рдореЗрдВ, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред



рд╕реМрднрд╛рдЧреНрдп рд╣реИ



All Articles