InglesPransesEspanyol

Ad


OnWorks favicon

makepp_incompatibilities - Online sa Cloud

Patakbuhin ang makepp_incompatibilities sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command na makepp_incompatibilities na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


makepp_incompatibilities -- Incompatibilities sa pagitan ng makepp at GNU make

DESCRIPTION


Ang Makepp ay idinisenyo upang maging mas malapit hangga't maaari sa paggawa ng GNU
(<http://www.gnu.org/software/make/manual/make.html>). Mga autotool ng GNU
(<http://www.gnu.org/software/automake/manual/automake.html>), CMake
(<http://www.cmake.org/>), Premake (http://industriousone.com/premake> at tingnan ang komento
sa ibaba) o mga handcrafted legacy build system ay dapat na mabuo gamit ang makepp. Ito ay gayon
maaari kang mag-migrate ng mga proyekto nang walang kahirap-hirap. O kung ayaw mong tamasahin ang lahat
ang mga pakinabang ng makepp (hal. para mabuo pa rin ng iba ang iyong proyekto gamit ang GNU make) habang ikaw
kumita mula sa pagiging maaasahan na kalamangan para sa iyong pag-unlad.

Gayunpaman, dahil sa pagkakaiba sa pilosopiya, ang ilan sa GNU make's o POSIX make's
(<http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html>) mga tampok ay hindi maaaring
suportado. May iilan na hindi naipatupad dahil wala tayong oras. Karamihan sa mga
Ang mga pagkakaiba sa ginawa ng GNU ay medyo teknikal at bihira lamang na magdulot ng mga problema. Sayang ang
Ang mga solusyon para sa mga kakulangan ng tradisyonal na paggawa ay nagiging mas kumplikado,
at nahihirapan si makepp.

Sa madaling sabi, kung hindi ito nabuo sa labas ng kahon, subukan ang:

makepp --no-warn makepp_simple_concatenation=1 makepp_percent_subdirs=1 \
--build-check=target_newer --last-chance-rules --no-remake-makefiles

Kung magtagumpay iyon, maaari mong subukang alisin ang mga argumentong iyon nang paisa-isa. Ngunit kung mabigo iyon,
subukang idagdag:

--traditional-recursive-make

Kung nabigo din iyon, ang build system ay nangangailangan ng ilang pag-aayos upang makipagtulungan sa makepp. Kahit na
kung ang ilang mga opsyon na inilarawan dito ay gumawa ng isang bagay na nabubuo, inirerekomenda pa rin itong umangkop
mga bagay nang bahagya, kaya naging tugma ang mga ito sa labas ng kahon sa parehong mga gawa.

Pagpilit mas marami pang POSIX or GNU gumawa pagkakatugma


Narito ang ilang mga posibilidad ng command line para gumana ang maraming legacy na build system
nang walang pagbabago. Nagiging sanhi sila ng makepp na tularan nang tumpak ang pag-uugali ng GNU make.

Pagkakatugma sa pamamagitan ng ang opsiyon: "--build-check=target_newer"
Bilang default, susubukan ng makepp na buuin muli ang lahat ng mga target kung mayroon man sa mga dependency
nagbago mula noong huling build, o kung nagbago ang command (tingnan ang makepp_build_check para sa
mga detalye). Ito ang karaniwang gusto mo. Minsan, gayunpaman, hindi mo gusto ang target
na muling itatayong kung ito ay nabago bukod sa kontrol ng makepp (hal., sa pamamagitan ng pag-edit
ito, o sa pamamagitan ng manu-manong pagpapatakbo ng program para gawin ang file). Maaari mong pilitin ang makepp na gamitin ang
tradisyonal na make algorithm, na bubuo lamang kung alinman sa mga target ay mas bago kaysa sa
dependencies, sa pamamagitan ng pagdaragdag ng opsyong ito sa command line.

Pagkakatugma sa pamamagitan ng ang opsiyon: "--dont-build=config.status"
May mga package na sinusubukang i-autoconfigure ang kanilang mga sarili, o gumawa ng iba pang mga bagay, na gmake
binabalewala maliban kung hihilingin, tulad ng:

config.status : i-configure
./config.status --recheck

i-configure : configure.in aclocal.m4
mag-autoconf

Karamihan sa mga tao ay walang kahit na "autoconf" na naka-install, kaya tapat na ginagawa ang lahat sa pamamagitan ng
ang mga patakaran, tulad ng ginagawa ng makepp, ay mabibigo. Pinipigilan iyon ng opsyong ito, kung malalaman mo kung ano
hindi para magtayo.

Pagkakatugma sa pamamagitan ng ang opsiyon: "--last-chance-rules"
Ang mga default na panuntunan (mga panuntunan sa pattern na walang dependency ng pattern) ay hindi karaniwang sinusuportahan.
Ginagawa ng Makepp ang lahat ng mga panuntunan batay sa mga umiiral na file, upang malaman nito ang bawat isa
file na maaaring mabuo. Sayang sa ganitong paraan hindi nito alam kung paano mag-instantiate ng pattern
tuntunin na walang pattern dependency. Ang mekanismong :last_chance ay bahagyang nireresolba iyon.
Kung saan ito ay sapat na mabuti para sa mga legacy na makefile, pinapayagan ng opsyong ito na i-on ito sa buong mundo.

Pagkakatugma sa pamamagitan ng ang opsiyon: "--hindi-babala"
Ang isang ito ay hindi nagpapabuti sa resulta. Magbibigay ang Makepp ng mga mensahe ng babala para sa maraming bagay
na ang tradisyunal na Unix na gumawa ay tinatanggap nang walang kurap. Ito ay dahil mayroon
mas mahusay na mga paraan upang gawin ang mga ito sa makepp. Kung iniinis ka ng mga babalang ito, maaari mong i-off ang mga ito
gamit ang pagpipiliang ito.

Pagkakatugma sa pamamagitan ng ang opsiyon: "--hybrid-recursive-make"
Ang mga paulit-ulit na invocation of make ay madalas na itinuturing na isang hindi ligtas na kasanayan (tingnan ang "Better
system para sa mga hierarchical build" sa makepp para sa mga detalye), ngunit karaniwan ang mga ito sa
umiiral na mga makefile. Sinusuportahan ng Makepp ang recursive make para sa backward compatibility; para sa bago
makefiles, mas mainam na gamitin ang "load_makefile" na pahayag, o ang implicit ni makepp
mekanismo ng paglo-load ng makefile.

Upang magamit ang mga repository para sa mga variant na build, at para makatulong na gawing recursive
invocations of make safer, makepp normal does not actually invoke himself recursively
kahit sabihin mo pa. Sa halip, nakikipag-ugnayan ang isang subprocess sa proseso ng magulang, at
ang aktwal na pagbuo ay ginagawa ng proseso ng magulang.

Gumagana ito sa karamihan ng mga kaso, ngunit hindi ka maaaring mag-invoke ng ilang makefile mula sa pareho
direktoryo, hal, ang mga sumusunod ay hindi gagana:

target: dependencies
$(MAKE) -f other_makefile target

Sa kasong ito, napansin ng makepp na naglo-load ito ng 2nd makefile at nagreklamo. Gamit ang pagpipiliang ito
sa halip ay babalik ito sa tradisyunal na paraan ng pagbuo mula sa mga karagdagang makefile sa
isang hiwalay na proseso ng makepp bawat isa.

Tandaan: Ang teknikal na paglo-load ng ilang makefile ay walang problema, ngunit kadalasan ay mayroon silang
parehong huwad na mga target na pangalan. Ang pag-iwas doon ay mangangahulugan ng kumpletong muling pagdidisenyo ng makepp
panloob. Gayunpaman, gagana ito, ngunit hindi ito katumbas:

target: dependencies
cd subdir && $(MAKE) -f other_makefile target

Pagkakatugma sa pamamagitan ng ang opsiyon: "--traditional-recursive-make"
Minsan ang nakaraang opsyon ay hindi sapat, lalo na kung ang recursive invocations ay gumagamit
magkasalungat na opsyon. Gumagamit lamang ang Makepp ng isang hanay ng mga pandaigdigang opsyon, kaya ang submake ay hindi
pinahihintulutang baguhin ang mga ito, dahil nauukol din iyon sa iba pang mga makefile.

Ang pagdaragdag ng opsyong ito sa command line, ay may mga sumusunod na hindi kanais-nais na epekto:

· Ang recursive makes ay hindi internally execute in parallel, kahit na ginagawa ng magulang.
Hindi tulad ng gmake walang pangkalahatang koordinasyon ng bilang ng mga proseso. Ito ay
hindi maipapatupad dahil ang ganitong paraan ng pagtatrabaho ay hindi layunin ng disenyo ng makepp.

· Ang recursive na gumawa ng mga proseso ay walang alam tungkol sa mga repositoryo.

· Ang bawat recursive make process ay gumagawa ng sarili nitong log file, sa direktoryo na ito ay hinihingi
sa, sa halip na gumawa ng isang log file para sa buong build.

· Dahil ang makepp ay karaniwang gumagawa ng higit sa tradisyonal na ginagawang itinuturing na kinakailangan, at dahil marami
ang mga build system ay nagbibigay ng mga recursive na tawag sa lahat ng direksyon, maaari itong humantong sa walang katapusang
recursion. Hihilahin ng Makepp ang preno pagkatapos ng 50 round at sasabihin sa iyo kung paano tumaas
na, kung sakaling mayroon ka talagang malalim na pugad.

Kahit na may opsyong "--traditional-recursive-make", ang mga variable ng kapaligiran
Ang "MAKEOVERRIDES" at "MFLAGS" ay hindi naka-set up, at binabalewala, kaya ang mga makefile na nakadepende sa
hindi gagana ang mga iyon.

A Premake nabuo Makefile ay isang nakakatawang wrapper lamang sa isang sub-make invocation sa parehong
direktoryo. Kung mayroon kang ilang target na proyekto XYZ ito ay magkakaroon ng isang linya tulad ng

@${MAKE} --no-print-directory -C . -f XYZ.gumawa

Sa kasong ito, maiiwasan mo ang opsyong "--traditional-recursive-make" sa pamamagitan ng direktang pag-invoke
makepp na "-f XYZ.make" pagpipilian.

Pagkakatugma wala ang opsiyon: "--mga trabaho=n"
Ang mga legacy na makefile ay minsan ay hindi maglilista ng lahat ng mga dependency, umaasa sa pagkakasunud-sunod ng
pagpapatupad upang gawin ang mga ito sa oras. Sa sitwasyong ito ay maaaring pamahalaan ng makepp na tumawag sa isang panuntunan bago
ang mga dependencies nito ay ginawa na lahat. Kung gayon ang mga resulta ay maaaring mas mahusay na may mas kaunti, o kahit na hindi
parallel execution.

Pagkakatugma sa pamamagitan ng ang variable: "makepp_simple_concatenation=1"
Ang rc-style substitution ay ang default na paraan ng makepp na gumaganap ng variable na pagpapalit sa text
string dahil bihira itong masira ang mga legacy na makefile at kadalasang kapaki-pakinabang sa bago
makefiles. Gayunpaman, nagpapakilala ito ng mga paminsan-minsang hindi pagkakatugma sa pagpapalit ng
mga variable na hindi napapalibutan ng mga puwang. Halimbawa,

INCLUDE_PREFIX := -I/some/include/dir -I
KASAMA := $(INCLUDE_PREFIX)/other/include/dir

itatakda ang "INCLUDES" sa "-I/some/include/dir/other/include/dir -I/other/include/dir" kung rc-
pinagana ang pagpapalit ng istilo, samantalang itatakda ito ng GNU make
"-I/some/include/dir -I/other/include/dir". Halimbawa, kapag kino-compile ang Redis 2.6.5 sinusubukan nitong gawin
patakbuhin ang "printfgcc". Ang ganitong nakakatawang pagsasama-sama ng dalawang utos ay isang malakas na indikasyon na
ang variable na ito ay kinakailangan upang bumalik upang makagawa ng semantics.

Mayroon ding hindi pagkakatugma sa pangangasiwa ng whitespace sa isang variable:

null :=
T := -o $(null) # T ay naglalaman ng -o na sinusundan ng isang puwang.
OUTFILE = $(T)outfile

itatakda ang "OUTFILE" sa "-ooutfile" kung pinagana ang rc-style substitution, samantalang ang GNU ay gumagawa
itatakda ito sa "-o outfile".

Ang parehong mga hindi pagkakatugma ay tinanggal sa pamamagitan ng pagtatakda ng "makepp_simple_concatenation"
variable. Tandaan, gayunpaman, na kahit na may "makepp_simple_concatenation", makepp pa rin
tinatrato ang whitespace nang hindi tugma sa ilang sitwasyon:

T := -o # Huwag tanggalin ang komentong ito.

Ang GNU ay gumawa ng mga set na "T" upang maglaman ng "-o" na sinusundan ng isang puwang, samantalang ang makepp ay tinanggal ang
trailing space pa rin. Kung gusto mo ang trailing space, dapat mong itakda
"makepp_simple_concatenation" at itakda din ang "T" gamit ang technique na kinasasangkutan ng dummy
variable tulad ng "null", tulad ng ipinapakita sa itaas.

Workaround opsyon "--no-remake-makefiles"
Ang karaniwang open source ay nangangailangan ng pagtawag sa "configure" upang lumikha ng mga makefile. Ngunit pagkatapos ay ang mga ito
Ang mga makefile ay maaaring maglaman ng mga panuntunan upang gawing muli ang makefile, sa pamamagitan ng pagtawag sa ilang utos. Makepp will
masayang sumunod at i-update ito ayon sa tuntunin. Ngunit kung minsan ito ay nakakapinsala, kaya
laktawan mo na lang.

Pagkakatugma sa pamamagitan ng ang variable: "makepp_percent_subdirs=1"
Bilang default, ang "%" sa isang pattern na panuntunan ay hindi tumutugma sa mga direktoryo. Nangangahulugan ito na ang isang panuntunan tulad ng
ito:

%.o: %.c
$(CC) $(CFLAGS) -c $(input) -o $(output)

ay hindi ilalapat sa mga file tulad ng "../shared/xyz.c". Kung gusto mo itong tumugma sa mga file
mga subdirectory din, pagkatapos ay itakda ang variable na "makepp_percent_subdirs=1" sa command line
o malapit sa simula ng isang makefile.

Pagkakatugma sa pamamagitan ng ang kapaligiran variable: $MAKEPP_IGNORE_OPTS
Minsan ang mga legacy na recursive invocation ay nagpapasa ng mga opsyon na hindi naiintindihan ng makepp.
Sana ang opsyon ay hindi mahalaga, ngunit pinipigilan nito ang makepp na tumakbo. Kasama nito
environment variable maaari mong hilingin sa makepp na tahimik na huwag pansinin ang ilang mga opsyon. Ang halaga
ay isang listahan ng mga opsyon na pinaghihiwalay ng espasyo, na maaaring magkaroon ng 4 na variant:

--mahaba=x
Isang mahabang opsyon na umaasa ng argumento. Ang katotohanang ito ay dapat ipahayag sa pamamagitan ng mga katumbas
sign, kahit na ang aktwal na paggamit ay maaari ding paghiwalayin ng whitespace, alinman sa "--long=bla" o
"--mahaba bla".

--mahaba
Isang mahabang opsyon na walang argumento.

-sx Isang maikling opsyon na umaasa ng argumento. Ang katotohanang ito ay dapat ipahayag sa pamamagitan ng pagdaragdag
isang bagay nang direkta pagkatapos ng opsyon, kahit na ang aktwal na paggamit ay maaari ding paghiwalayin ng
whitespace, alinman sa "-sbla" o "-s bla".

-s Isang maikling opsyon na walang argumento.

Halimbawa, i-override ang -R na opsyon ng makepp ng isa nang walang argumento at tanggapin ang pag-debug ng gmake
opsyon na may argumento:

i-export ang MAKEPP_IGNORE_OPTS='-R --debug=x'

Incompatibilities na mangailangan Makefile mga pagbabago


· Ang mga makefile na tahasang tumatawag ay pumipigil sa makepp na buuin ang lahat mismo.
Ang sariling "ExtUtils::MakeMaker" ni Alas Perl ay gumagawa ng pangalawa sa sumusunod na dalawang anyo ng
ang pagkakamaling ito hanggang sa bersyon 6.56 (Perl 5.12.1):

subdir:
cd subdir; gumawa

GUMAWA = gumawa

· Ang pagtatakda ng variable na "VPATH" sa ilang halaga ay tahasang tinatawag na "vpath % value". "vpath"
ang mga pahayag ay ginagaya sa mekanismo ng imbakan. Kaya, kung saan gmake kapalit
ang path patungo sa file na matatagpuan sa vpath, sa halip ay i-link ito ng makepp sa simbolikong paraan
kung saan ito kailangan. Kaya ang makepp ay magbibigay ng hindi binagong string, na karaniwan ay
hindi problema.

Ang mga target sa isang vpath ay hindi suportado. (Isinasaalang-alang sila ng Gmake kung mas bago sila kaysa
kanilang mga dependencies, ngunit kung hindi, ang target ay muling gagawa sa kasalukuyang direktoryo
-- medyo hindi pare-pareho.) Ang pag-unset ng mga vpath ay hindi suportado.

· Ang isang pattern na panuntunan na naroroon sa ibang pagkakataon sa isang makefile ay nag-o-override sa isa na naroroon nang mas maaga.
Paatras ito mula sa GNU make.

· Ang set ng builtin na implicit na mga panuntunan ay medyo naiiba sa mga para sa GNU make,
kahit na ang mga variable na pangalan ay halos magkatugma. Ang mga builtin na panuntunan ay dapat
matagumpay na nag-compile ng mga programang C/C++/Fortran, at sa katunayan ay maaaring mahulaan ang
tamang mga aklatan sa ilang mga kaso din. Suporta para sa Modula-2 at RatFor at iba pang bihira
Ang mga wika ay sadyang hindi naroroon, dahil patuloy akong nagkakaproblema sa GNU
make's rules noong hindi ko sinasadyang nagamit muli ang mga extension para sa mga wikang iyon.

· Ang prefix ng aksyon na "+" ay tahimik na binabalewala.

· Hindi sinusuportahan ang mga miyembro ng archive, at hindi rin ang nauugnay na mga awtomatikong variable
$%, "$(%D)", at "$(%F)".

· Walang suporta sa SCCS.

· Ang nangunguna at sumusunod na whitespace sa mga variable na takdang-aralin ay binabalewala (kahit na ang
ang whitespace ay sinusundan ng isang komento). Para sa higit pang mga detalye sa paghawak ng whitespace
incompatibilities, tingnan ang "Whitespace sa mga variable" sa makepp_variables.

· Hindi sinusubukan ng Makepp na buuin muli ang mga file na kasama sa pahayag na "isama" maliban kung
ang makefile ay naglalaman ng panuntunan para sa pagbuo ng mga ito bago makita ang include statement.
(Gayunpaman, susubukan nitong muling buuin ang makefile mismo.) Ito ay karaniwang ginagamit para sa
Kasama sa paghawak ang mga dependency ng file, at hindi kasing pakinabang ng makepp dahil hindi mo ginagawa
kailangan gawin iyon pa rin.

· Ang variable na "SHELL" ay kasalukuyang bahagyang binabalewala. Palaging ginagamit ng Makepp / Bin / SH
maliban na lamang kung /usr/xpg4/bin/sh or /sbin/xpg4/sh ay matatagpuan o maliban kung i-export mo ang "SHELL"
variable sa iyong makefile. Ngunit kung gagawin mo, ang command parser ay maaaring hindi ganap
maunawaan kung ano ang ginagawa ng iyong shell command. Sa Windows Strawberry o ActiveState Perl
dapat mong itakda sa halip ang iyong SHELL variable bago tumatawag kay makepp.

· Ang mga dependency ng anumang bagay sa Makefile ay gumagana pa rin, ngunit kadalasan ay hindi kailangan.
Ito ay kadalasang ginagamit upang pilitin ang muling pagtatayo kapag nagbago ang mga opsyon sa compilation. Alam ni Makepp
kapag ang mga build command ay nagbago nang walang anumang espesyal sa makefile; nag-iimbak ito
ito sa isang file-by-file na batayan. Kung babaguhin mo ang makefile, alam nito kung alin
Ang mga file ay nangangailangan ng recompilation.

· Ang mga intermediate na file ay hindi tinatanggal. (Dahil pinipilit ng makepp na magkaroon ng lahat ng file
ang mga petsa ay kapareho ng mga ito sa huling build, ang mga intermediate na file ay dapat lahat
present or else rebuilds will occur.) Walang espesyal na katayuan na ibinibigay
mga intermediate na file.

· Ang tanging espesyal na target na sinusuportahan ay ".PHONY" at bahagyang ".SUFFIXES". Ang
ang natitira ay naka-ingo lang.

Sa partikular, ang GNU make ay may mga sumusunod na espesyal na target:

.SUFFIXES
Binabalewala ng Makepp ang ".SUFFIXES" maliban sa espesyal na case ng ".SUFFIXES" na may no
dependencies, tulad nito:

.SUFFIXES:

na nagsasabi dito na huwag i-load ang alinman sa mga default na panuntunan nito.

.Intermediate, .SECONDARY, .MAHALAGA
Walang espesyal na katayuan ang ibinibigay sa mga intermediate na file at kaya ang mga target na ito ay hindi
makahulugan.

.HUWAG PANSININ
Ang target na ito ay hindi pinapansin. Kung gusto mong huwag pansinin ang mga error, ilagay ang salitang "ignore_error"
(o isang minus sign) sa harap ng command na ang exit status ay hindi papansinin.

.TAHIMIK
Ang target na ito ay hindi pinapansin. Kung gusto mong huwag mag-echo ang mga utos, ilagay ang salitang "noecho"
(o ang karakter na "@") sa harap ng utos na hindi dapat i-echo,
o gamitin ang "--silent" na opsyon para makepp.

.DELETE_ON_ERROR
.EXPORT_ALL_VARIABLES
.NOEXPORT
.POSIX
.DEFAULT
Ang mga target na ito ay hindi suportado at binabalewala lang.

· Ang GNU ay gumagawa ng mga function na "eval", "flavor" at "value" ay hindi kasalukuyang sinusuportahan. Ikaw
maaaring makamit ang parehong bagay tulad ng eval sa isang mas diretsong paraan gamit ang "$[...]"
pagpapalawak ng variable o function.

· Hindi ganap na sinusuportahan ang mga panuntunan ng double colon. (Hindi sila maaaring: sa paradigm ni makepp,
hindi maaaring magkaroon ng higit sa isang paraan upang i-update ang isang target.) Sa kasalukuyan, ang bawat sunud-sunod
ang double colon rule para sa isang partikular na target ay nagdaragdag lamang ng command string at dependency nito
listahan sa command string at listahan ng dependency para sa target na ito. Halimbawa, kung ikaw
isulat ito:

a :: b
&pusa b -oa

# Mamaya sa iyong makefile:
a :: c
&cat c -o >>a

ito ay tamang-tama katulad ng kung ikaw ay nagsulat

a: bc
&pusa b -oa
&cat c -o >>a

Ito ay tiyak na hindi kung ano ang nilalayon ng double colon rules, at hindi ito palaging
gumagana, ngunit gumagana ito para sa mga target tulad ng "malinis" o para sa lahat ng bagay na iyon
ExtUtils::Inilalagay ng MakeMaker ang mga makefile nito. Huwag umasa sa iba pa
kaysa sa legacy makefiles.

· Ang function na "$(wildcard )" ay tumutugma hindi lamang sa mga file na umiiral, kundi pati na rin sa mga file na kung saan
ay hindi pa umiiral, ngunit kung saan ay may panuntunan na nakita ng makepp noong panahong iyon
Ang function na "$(wildcard )" ay sinusuri.

· Ang "define" na pahayag ay sinusuportahan, ngunit ang paghawak ng "@" bago ito ay tapos na
iba. Kasalukuyang nasa makepp, "@" sa harap ng isang variable na mayroong multi-line
Pipigilan lang ng value ang echoing ng unang linya. Halimbawa,

tukuyin ang mga echo-line
&echo line1 -o $@
&echo line2 -o>>$@
endef

x:
@$(echo-lines)

hindi pipigilan ang pag-print ng "&echo line2" gaya ng ginagawa nito sa GNU make; ito lamang
sugpuin ang pag-print ng "&echo line1".

· Hindi sinusuportahan ng Makepp ang mga sumusunod na variable ng kapaligiran (hindi nito itinatakda ang mga ito,
at binabalewala lang sila):

MGA MAKEOVERRIDE
MFLAGS

Incompatibilities in order of pagpapahayag paglawak
· Sa makepp, ang mga pagkilos ng panuntunan ay pinalawak bago ang lahat ng mga dependency ay ginagarantiyahan
ay naitayo na. Magagawa mo ito sa pamamagitan ng pagbabago ng mga panuntunan tulad nito:

foo: bar
genfoo < $(shell cat bar)

sa:

foo: bar
genfoo < `cat bar`

o ito, na gagawa ng file sa panahon ng pagpapalawak:

foo: bar
genfoo < $(&cat $(gumawa ng bar))

Mas gusto ito dito, dahil nakalista ang file sa bar ay isang dependency din nito
panuntunan, at maaari na itong mahuli ng makepp kapag sinusuri nang leksikal ang pag-redirect.

· Kahit na hindi ko ito nakitang ginamit, pinapayagan ng GNU make ang mga sumusunod:

colon = :
a$(colon) b
echo $^

Masyadong huli na ang Makepp para gumana ang "$(colon)." Gayunpaman nag-aalok ito ng
alternatibong "$[colon]" syntax, na higit pa sa ginagawa ng GNU, dahil ito nga
pinalawak nang maaga.

"$(MAKE)" maaari isama mga puwang
Sa isang na-uninstall na makepp o kung ang platform ay tila hindi sumusuporta sa pagsisimula ng isang Perl script
sa pamamagitan ng magic number o sa "--traditional-recursive-make" ang variable na ito ay magsasama ng hindi bababa sa
isang espasyo. Hindi iyon problema kapag ginagamit ito bilang isang utos. Ngunit kapag ipinasa ito bilang isang
hindi naka-quote na parameter sa isang script (tulad ng ginagawa ng Perl 5.14.0 build system), mapupunit ito
hiwalay sa hiwalay na mga parameter, na humahantong sa pagkalito. Kaya bilang isang parameter ito ay mas ligtas sa
quote ito bilang '$(MAKE)'. na hindi sumisira sa backward compatibility.

Partikular sa target mga takdang-aralin huwag magpalaganap
Ang mga variable na partikular sa target ng Makepp ay bahagyang naiiba sa GNU make's dahil sila
ilapat lamang sa panuntunan para sa isang file na nabanggit, at hindi sa alinman sa mga nauna nito; tingnan mo
Mga takdang-aralin na partikular sa target.

Mga magulang or tirante huwag pugad
Tinatapos ng Makepp ang mga expression sa unang tumutugmang panaklong o brace. Sa halip na ito

$(somefunction ... ( ) ...) # GNU gumawa ng istilo

dapat mong gamitin ang alinman sa mga ito

${somefunction ... ( ) ...} # GNU make compatible
$((somefunction ... ( ) ...)) # Makepp extension

Ito ay malamang na ayusin sa bersyon 2.1, maaaring opsyonal.

Minor puntos
Ang mga dependency ng pattern ay hindi tumutugma sa mga huwad na target
%.a: %.b; ...
$(phony xb): ; ... # ay hindi nagbibigay ng paraan upang bumuo xa

Ang mga komento ay walang mga linya ng pagpapatuloy
# Ito ay \
HINDI isang 2-linya na komento

Utos linya hindi pagkakatugma


Sinusuportahan ng Makepp ang ilan sa mga mas kapaki-pakinabang na opsyon sa command line ng make. Ang mga sumusunod, gayunpaman,
ay hindi suportado:

-d o --debug
-f -
Ang mga panloob na makefile object ng Makepp ay naka-link sa mga file object, kaya hindi nito mahawakan
stdin.

-i
-l o --load-average o --max-load
-m Ang pagpipiliang "-m" ng Makepp ay may kinalaman sa pagpili ng paraan ng lagda, samantalang ang GNU ay gumagawa
hindi pinapansin -m.

-p o --print-data-base
-q o --tanong
-R o --no-builtin-variables
Ang pagpipiliang "-R" ng Makepp ay talagang gumagawa ng isang bagay na ganap na naiiba.

-S --hindi-ituloy-o --hihinto
Ang "--stop" na opsyon ay humihinto (nagpatulog) makepp pagkatapos malaman ang lahat ng mga panuntunan, kaya ikaw
maaaring magpatuloy sa pag-edit.

-t o --touch
-w o --print-directory
Awtomatikong nangyayari ito.

--warn-undefined-variables

Ang ilan sa mga ito ay madaling masuportahan kung may nagmamalasakit.

Paiba-iba hindi pagkakatugma


Tinitingnan ng Makepp sa $PATH ang isang katugmang command na ibabalik para sa mga variable tulad ng "$(CC)" o
"$(CXX)", habang ang GNU make ay may mga static na default. Binibigyan din ng makepp ng kagustuhan ang "gcc" at
"g++" habang nakakagulat na ang GNU ay nagbabalik ng "cc" para sa dating, ngunit pareho para sa
huli. Maaari mong i-override ang mga ito sa makefile, sa command line o sa pamamagitan ng pag-export ng a
variable ng parehong pangalan bago invoking makepp.

Gumamit ng makepp_incompatibilities online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

Linux command

Ad