คำถามติดแท็ก gnu-make

แท็กนี้มีไว้สำหรับคำถามเกี่ยวกับ "gmake" ซึ่งเป็นยูทิลิตี้ "make" เวอร์ชัน GNU เพื่อบำรุงรักษาและอัปเดตโปรแกรม

5
อะไรคือความแตกต่างระหว่างการกำหนดตัวแปร GNU Makefile =,? =,: = และ + =?
ใครช่วยอธิบายได้อย่างชัดเจนว่าการมอบหมายตัวแปรนั้นทำงานได้อย่างไรใน Makefiles อะไรคือความแตกต่างระหว่าง : VARIABLE = value VARIABLE ?= value VARIABLE := value VARIABLE += value ฉันได้อ่านหัวข้อในคู่มือของ GNU Make แล้ว แต่ก็ยังไม่สมเหตุสมผลสำหรับฉัน
764 makefile  gnu-make 


5
การใช้ CMake กับ GNU Make: ฉันจะดูคำสั่งที่แน่นอนได้อย่างไร
ฉันใช้ CMake กับ GNU Make และต้องการดูคำสั่งทั้งหมดอย่างแน่นอน (ตัวอย่างเช่นวิธีการคอมไพเลอร์ถูกดำเนินการแฟล็กทั้งหมด ฯลฯ ) GNU สร้าง--debugขึ้นมา แต่ดูเหมือนว่าจะมีประโยชน์หรือไม่ CMake จัดเตรียมแฟล็กเพิ่มเติมใน Makefile ที่สร้างขึ้นเพื่อการดีบักหรือไม่
281 cmake  gnu-make 

15
วิธีพิมพ์ตัวแปรใน makefile
ใน makefile ของฉันฉันมีตัวแปร 'NDK_PROJECT_PATH' คำถามของฉันคือฉันจะพิมพ์ออกมาเมื่อคอมไพล์ได้อย่างไร ฉันอ่านMake file echo แสดงสตริง "$ PATH"แล้วลอง: @echo $(NDK_PROJECT_PATH) @echo $(value NDK_PROJECT_PATH) ทั้งสองให้ฉัน "build-local.mk:102: *** missing separator. Stop." ใครรู้ว่าทำไมมันไม่ทำงานสำหรับฉัน
247 makefile  gnu-make 

4
กำหนดตัวแปรในเวลาดำเนินการของกฎ
ใน GNUmakefile ของฉันฉันต้องการมีกฎที่ใช้ไดเรกทอรีชั่วคราว ตัวอย่างเช่น: out.tar: TMP := $(shell mktemp -d) echo hi $(TMP)/hi.txt tar -C $(TMP) cf $@ . rm -rf $(TMP) เขียนเป็นกฎข้างต้นสร้างไดเรกทอรีชั่วคราวในเวลาที่กฎจะถูกแยกวิเคราะห์ ซึ่งหมายความว่าแม้ว่าฉันจะไม่สร้าง out.tar ตลอดเวลาก็มีการสร้างไดเรกทอรีชั่วคราวจำนวนมาก ฉันต้องการหลีกเลี่ยง / tmp ของฉันที่เกลื่อนไปด้วยไดเรกทอรีชั่วคราวที่ไม่ได้ใช้ มีวิธีที่จะทำให้ตัวแปรถูกกำหนดเมื่อกฎถูกไล่ออกซึ่งตรงข้ามกับเมื่อใดก็ตามที่มันถูกกำหนด? ความคิดหลักของฉันคือการทิ้ง mktemp และ tar ลงในเชลล์สคริปต์ แต่มันก็ดูไม่น่าดู
209 makefile  gnu-make 

12
วิธีรับไดเรกทอรีสัมพันธ์ปัจจุบันของ Makefile ของคุณ
ฉันมี Makefiles หลายตัวในไดเรกทอรีเฉพาะแอพเช่นนี้: /project1/apps/app_typeA/Makefile /project1/apps/app_typeB/Makefile /project1/apps/app_typeC/Makefile Makefile แต่ละไฟล์มีไฟล์. inc ในพา ธ นี้หนึ่งระดับขึ้นไป: /project1/apps/app_rules.inc ภายใน app_rules.inc ฉันกำลังตั้งค่าปลายทางที่ฉันต้องการให้วางไบนารีเมื่อสร้าง ฉันต้องการให้ไบนารีทั้งหมดอยู่ในapp_typeเส้นทางของพวกเขา: /project1/bin/app_typeA/ ฉันพยายามใช้$(CURDIR)เช่นนี้ OUTPUT_PATH = /project1/bin/$(CURDIR) แต่ผมได้ไบนารีฝังอยู่ในชื่อเส้นทางทั้งหมดเช่นนี้(แจ้งให้ทราบล่วงหน้าซ้ำซ้อน) /project1/bin/projects/users/bob/project1/apps/app_typeA ฉันจะทำอย่างไรเพื่อให้ได้รับ "ไดเรกทอรีปัจจุบัน" ของการดำเนินการเพื่อให้ฉันสามารถรู้เพียงapp_typeXเพื่อวางไบนารีในโฟลเดอร์ประเภทของพวกเขา?

17
คุณจะรับรายชื่อเป้าหมายใน makefile ได้อย่างไร
ฉันใช้เรคบิต (โปรแกรมทำ Ruby) และมีตัวเลือกเพื่อรับรายการเป้าหมายที่มีอยู่ทั้งหมดเช่น > rake --tasks rake db:charset # retrieve the charset for your data... rake db:collation # retrieve the collation for your da... rake db:create # Creates the databases defined in y... rake db:drop # Drops the database for your curren... ... แต่ดูเหมือนจะไม่มีตัวเลือกในการทำเช่นนี้ใน GNU ทำ เห็นได้ชัดว่ารหัสเกือบจะมีมันเป็นของปี 2007 - …

7
ฉันจะกำหนดคอนฟิก makefile ของฉันสำหรับการดีบักและปล่อยบิลด์ได้อย่างไร?
ฉันมี makefile ต่อไปนี้สำหรับโครงการของฉันและฉันต้องการกำหนดค่าให้เป็นรุ่นวางจำหน่ายและแก้ไขข้อบกพร่อง ในรหัสของฉันฉันมี#ifdef DEBUGมาโครจำนวนมากดังนั้นจึงเป็นเรื่องของการตั้งค่าแมโครนี้และเพิ่มการตั้ง-g3 -gdwarf2ค่าสถานะลงในคอมไพเลอร์ ฉันจะทำสิ่งนี้ได้อย่างไร $(CC) = g++ -g3 -gdwarf2 $(cc) = gcc -g3 -gdwarf2 all: executable executable: CommandParser.tab.o CommandParser.yy.o Command.o g++ -g -o output CommandParser.yy.o CommandParser.tab.o Command.o -lfl CommandParser.yy.o: CommandParser.l flex -o CommandParser.yy.c CommandParser.l gcc -g -c CommandParser.yy.c CommandParser.tab.o: CommandParser.y bison -d CommandParser.y g++ -g -c CommandParser.tab.c …
175 makefile  gnu-make 

2
@, - และ + ทำอะไรเป็นคำนำหน้าของบรรทัดสูตรใน Make
ในคู่มือ GNU Makefile นั้น กล่าวถึงคำนำหน้าเหล่านี้ หากมีการจัดเตรียม. ONESHELL จะมีการตรวจสอบเฉพาะบรรทัดแรกของสูตรสำหรับอักขระนำหน้าพิเศษ ('@', '-' และ '+') คำนำหน้าเหล่านี้ทำอะไรและพวกเขาพูดถึงที่ไหน
172 makefile  gnu-make 



4
gmake กับ make ต่างกันอย่างไร?
ฉันกำลังพยายามทำความเข้าใจความแตกต่างระหว่าง 'gmake' และ 'make'? ในกล่อง linux ของฉันเหมือนกัน: % gmake --version GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % make --version GNU Make 3.81 …
127 build  makefile  gnu-make 

9
จะติดตั้งและใช้“ make” ใน Windows ได้อย่างไร?
ฉันกำลังทำตามคำแนะนำของคนที่ฉันโคลนที่เก็บข้อมูลไปยังเครื่องของฉัน สิ่งที่ฉันต้องการนั้นง่ายมาก: เพื่อให้สามารถใช้makeคำสั่งเป็นส่วนหนึ่งของการตั้งค่าสภาพแวดล้อมโค้ด แต่ฉันใช้ Windows และฉันค้นหาออนไลน์เท่านั้นเพื่อค้นหาไฟล์ make.exe เพื่อดาวน์โหลดmake-4.1.tar.gzไฟล์ที่จะดาวน์โหลด (ฉันไม่รู้ว่าจะทำอย่างไรกับมันต่อไป) และสิ่งต่างๆเกี่ยวกับการดาวน์โหลด MinGW (สำหรับ GNU แต่ หลังจากติดตั้งแล้วฉันไม่พบการกล่าวถึง "make") ฉันไม่ต้องการคอมไพเลอร์ GNU หรือสิ่งที่เกี่ยวข้อง ฉันต้องการใช้ "make" ใน Windows เท่านั้น โปรดบอกฉันว่าฉันควรทำอย่างไรเพื่อให้มันสำเร็จ ขอบคุณล่วงหน้า!

4
จะเรียก Makefile จาก Makefile อื่นได้อย่างไร?
ฉันได้รับผลลัพธ์ที่ไม่คาดคิดโดยเรียกใช้ makefile จากอีก ฉันมีสอง makefiles หนึ่งเรียกว่าและเป็นหนึ่งเรียกว่า/path/to/project/makefile /path/to/project/gtest-1.4.0/make/Makefileฉันพยายามที่จะเรียกอดีตคนหลัง ใน / path / to / project / makefile ฉันมี dev: $(OBJ_FILES) $(CPPC) $(LIBS) $(FLAGS_DEV) $(OBJ_FILES) -o $(BIN_DIR)/$(PROJECT) $(MAKE) -f ./gtest-1.4.0/make/Makefile clean: rm -f ./*~ ./gmon.out ./core $(SRC_DIR)/*~ $(OBJ_DIR)/*.o rm -f ../svn-commit.tmp~ rm -f $(BIN_DIR)/$(PROJECT) make -f gtest-1.4.0/make/Makefile clean และในตัว/path/to/project/gtest-1.4.0/make/Makefileฉันมี all: $(TESTS) clean: …
125 makefile  gnu-make 

12
ตรวจสอบว่ามีโปรแกรมจาก Makefile หรือไม่
ฉันจะตรวจสอบได้อย่างไรว่าโปรแกรมสามารถเรียกใช้จาก Makefile ได้หรือไม่? (นั่นคือโปรแกรมควรมีอยู่ในเส้นทางหรือมิฉะนั้นสามารถเรียกใช้ได้) สามารถใช้เพื่อตรวจสอบว่ามีการติดตั้งคอมไพเลอร์ใดบ้าง เช่นคำถามนี้แต่ไม่ถือว่าเชลล์ต้นแบบเข้ากันได้กับ POSIX
115 makefile  gnu-make 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.