انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: Makefile  (دفعات بازدید: 663 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین abdossamad2003

  • Full Member
  • *
  • ارسال: 157
Makefile
« : 15 مهر 1395، 03:58 ب‌ظ »
با سلام خدمت دوستان
سوال من اینه که makefile فایل چه عملی انجام می دهد?
مثلاْ محتوای یک makefile به صورت زیر است:
#
# --- HYCOM 2.2 makefile
#
# --- Stand-alone HYCOM, or HYCOM ESMF component, or HYCOM+CICE.
#
# --- Tunable parameters in ../config/$(ARCH)_$(TYPE)
#

.SUFFIXES:
.SUFFIXES: .c .F .f .o

.F:
@echo "Must have an explicit rule for" $*
.f:
@echo "Must have an explicit rule for" $*
.c:
@echo "Must have an explicit rule for" $*

include ../config/$(ARCH)_$(TYPE)

MODS =   mod_dimensions.o mod_xc.o mod_za.o mod_pipe.o mod_incupd.o mod_floats.o mod_tides.o mod_mean.o mod_hycom.o

OBJS = archiv.o barotp.o  bigrid.o blkdat.o  cnuity.o convec.o \
diapfl.o dpthuv.o  dpudpv.o forfun.o  geopar.o hybgen.o \
icloan.o inicon.o inigiss.o inikpp.o   inimy.o latbdy.o \
matinv.o momtum.o  mxkprf.o  mxkrt.o  mxkrtm.o  mxpwp.o \
overtn.o poflat.o  prtmsk.o  psmoo.o restart.o \
thermf.o trcupd.o  tsadvc.o  \
       machine.o  wtime.o machi_c.o  isnan.o

hycom: $(MODS) $(OBJS) hycom.o
$(LD)  $(LDFLAGS) -o hycom  hycom.o $(MODS) $(OBJS) $(EXTRALIBS)

esmf: $(MODS) $(OBJS)
@echo "--- ESMF hycom component has been built ---"

hycom_cice: $(MODS) $(OBJS) mod_OICPL.o hycom_cice.o
$(LD)  $(LDFLAGS) -o hycom_cice \
                             hycom_cice.o mod_OICPL.o \
                             $(MODS) $(OBJS) \
                             ${CICE_DIR}/esmf/compile/*.o \
                             $(EXTRALIBS)

hycom.o:        hycom.F       mod_hycom.o
hycom_cice.o:   hycom_cice.F  mod_hycom.o mod_OICPL.o

archiv.o:  archiv.f  mod_xc.o common_blocks.h            mod_za.o
barotp.o:  barotp.f  mod_xc.o common_blocks.h                     mod_pipe.o \
                                                          mod_tides.o
bigrid.o:  bigrid.f  mod_xc.o
blkdat.o:  blkdat.F  mod_xc.o common_blocks.h stmt_fns.h          mod_incupd.o \
                                                          mod_floats.o \
                                                          mod_tides.o
cnuity.o:  cnuity.f  mod_xc.o common_blocks.h                     mod_pipe.o
convec.o:  convec.f  mod_xc.o common_blocks.h stmt_fns.h
diapfl.o:  diapfl.f  mod_xc.o common_blocks.h stmt_fns.h
dpthuv.o:  dpthuv.f  mod_xc.o common_blocks.h
dpudpv.o:  dpudpv.f  mod_xc.o
forfun.o:  forfun.f  mod_xc.o common_blocks.h            mod_za.o
geopar.o:  geopar.F  mod_xc.o common_blocks.h stmt_fns.h mod_za.o
hybgen.o:  hybgen.f  mod_xc.o common_blocks.h stmt_fns.h          mod_pipe.o
icloan.o:  icloan.f  mod_xc.o common_blocks.h stmt_fns.h
inicon.o:  inicon.f  mod_xc.o common_blocks.h stmt_fns.h          mod_pipe.o
inigiss.o: inigiss.f mod_xc.o common_blocks.h stmt_fns.h
inikpp.o:  inikpp.f  mod_xc.o common_blocks.h stmt_fns.h
inimy.o:   inimy.f   mod_xc.o common_blocks.h stmt_fns.h
isnan.o:   isnan.F
latbdy.o:  latbdy.f  mod_xc.o common_blocks.h                     mod_tides.o
machine.o: machine.F
machi_c.o: machi_c.c
matinv.o:  matinv.f  mod_xc.o common_blocks.h
momtum.o:  momtum.f  mod_xc.o common_blocks.h stmt_fns.h          mod_pipe.o \
                                                          mod_tides.o
mxkprf.o:  mxkprf.f  mod_xc.o common_blocks.h stmt_fns.h          mod_pipe.o
mxkrt.o:   mxkrt.f   mod_xc.o common_blocks.h stmt_fns.h
mxkrtm.o:  mxkrtm.f  mod_xc.o common_blocks.h stmt_fns.h
mxpwp.o:   mxpwp.f   mod_xc.o common_blocks.h stmt_fns.h
overtn.o:  overtn.f  mod_xc.o common_blocks.h
poflat.o:  poflat.f
prtmsk.o:  prtmsk.f
psmoo.o:   psmoo.f   mod_xc.o
restart.o: restart.f mod_xc.o common_blocks.h            mod_za.o mod_tides.o
thermf.o:  thermf.f  mod_xc.o common_blocks.h stmt_fns.h
trcupd.o:  trcupd.f  mod_xc.o common_blocks.h                     mod_pipe.o
tsadvc.o:  tsadvc.f  mod_xc.o common_blocks.h stmt_fns.h          mod_pipe.o
wtime.o:   wtime.F
mod_hycom.o: \
        mod_hycom.F  mod_xc.o common_blocks.h            mod_za.o mod_pipe.o \
                                                          mod_incupd.o \
                                                          mod_mean.o \
                                                          mod_floats.o
mod_incupd.o: \
        mod_incupd.F mod_xc.o common_blocks.h            mod_za.o
mod_floats.o: \
        mod_floats.F mod_xc.o common_blocks.h            mod_za.o mod_pipe.o
mod_pipe.o: \
        mod_pipe.F   mod_xc.o common_blocks.h
mod_tides.o: \
        mod_tides.F  mod_xc.o common_blocks.h            mod_za.o
mod_mean.o: \
        mod_mean.F   mod_xc.o common_blocks.h            mod_za.o

mod_dimensions.o:   mod_dimensions.F dimensions.h
mod_xc.o: mod_xc.F  mod_dimensions.o mod_xc_sm.h mod_xc_mp.h
mod_za.o: mod_za.F  mod_xc.o         mod_za_sm.h mod_za_mp.h mod_za_mp1.h mod_za_zt.h

mod_OICPL.o: mod_OICPL.F


توضیح مختصر دوستان برای من مفید خواهد بود
با تشکر



« آخرین ویرایش: 15 مهر 1395، 04:48 ب‌ظ توسط سلمان م. »

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19754
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : Makefile
« پاسخ #1 : 16 مهر 1395، 01:04 ق‌ظ »
پروندهٔ makefile به دستور make می‌گه که باید رد چه شرایطی، چه کارهایی رو انجام بده. همین!
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین abdossamad2003

  • Full Member
  • *
  • ارسال: 157
پاسخ : Makefile
« پاسخ #2 : 18 مهر 1395، 04:16 ب‌ظ »
با تشکر
خود دستور make یک دستور درونی در لینوکس محسوب می شود یا دستور خارجی است؟

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19754
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : Makefile
« پاسخ #3 : 18 مهر 1395، 05:04 ب‌ظ »
لینوکس که دستوری نداره اصلاً! make نام پروندهٔ اجرایی نرم‌افزار GNU make است: https://www.gnu.org/software/make
این نرم‌افزار، جزء استانداردی از سیستم‌عامل گنوست.
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین Borderliner

  • Full Member
  • *
  • ارسال: 115
  • جنسیت : پسر
  • macOS Sierra 10.12.6
    • Borderliner | GitHub
پاسخ : Makefile
« پاسخ #4 : 23 مهر 1395، 02:46 ب‌ظ »
برنامه make برنامه اتوماسیون برای کامپایل کردن سورس کدهای زبان‌های برنامه نویسی، به خصوص C و ++Cه. برای مثال برنامه زیر رو در نظر بگیرید:

#include <iostream>

int main(int argc, char **argv) {
  std::cout<<"Hello World!"<<std::endl;
  return 0;
}

برای کامپایل کردن چنین برنامه ای، از دستور زیر استفاده میشه:
g++ code.cpp -O2 -o Appبرای پاک کردن فایل App ای که تولید شده، از دستور زیر استفاده میشه:
rm -f Appبرای نصب برنامه App هم میشه همچین چیزی رو فرض کرد:
cp App /usr/local/bin
شما برای هربار کامپایل کردن، باید دستورات تکراری بالا رو اجرا کنید. اما با make، این دستورات براتون خلاصه میشن. یک فایل بسازید به اسم Makefile یا makefile، بعد کد زیر رو درونش ذخیره کنید، و در کنار فایل code.cpp قرارش بدین:
App:
g++ code.cpp -O2 -o App
clean:
rm -f App
install:
cp App /usr/local/bin
uninstall:
rm -f /usr/local/bin/App

حالا یک ترمینال باز کنید و دستور make رو بزنید. میبینید که برنامه کامپایل شد. حالا اگه دستور make clean رو بزنید، فایل کامپایل شده App پاک میشه. دستور make install و make uninstall هم برنامه رو به ترتیب نصب و حذف میکنن از سیستم. امیدوارم به دردتون بخوره این اطلاعات.
..::Borderliner::..