คำถามติดแท็ก makefile

makefile เป็นไฟล์อินพุตสำหรับภาษา / เครื่องมือสร้างบิลด์ มันระบุเป้าหมายและการอ้างอิงพร้อมกับคำสั่งที่เกี่ยวข้องเพื่อดำเนินการ (สูตรอาหาร aka) เพื่ออัปเดตเป้าหมาย

4
วิธีตั้งค่าตัวแปรสภาพแวดล้อมของกระบวนการลูกใน Makefile
ฉันต้องการเปลี่ยน Makefile นี้: SHELL := /bin/bash PATH := node_modules/.bin:$(PATH) boot: @supervisor \ --harmony \ --watch etc,lib \ --extensions js,json \ --no-restart-on error \ lib test: NODE_ENV=test mocha \ --harmony \ --reporter spec \ test clean: @rm -rf node_modules .PHONY: test clean ถึง: SHELL := /bin/bash PATH := node_modules/.bin:$(PATH) boot: @supervisor …

10
Makefiles พร้อมไฟล์ต้นฉบับในไดเรกทอรีที่แตกต่างกัน
ฉันมีโครงการที่โครงสร้างไดเรกทอรีเป็นเช่นนี้: $projectroot | +---------------+----------------+ | | | part1/ part2/ part3/ | | | +------+-----+ +---+----+ +---+-----+ | | | | | | | data/ src/ inc/ src/ inc/ src/ inc/ ฉันจะเขียน makefile ที่จะอยู่ใน part / src (หรือที่ไหนก็ได้) ที่สามารถ comple / link บนไฟล์ต้นฉบับ c / c ++ ในบางส่วนได้อย่างไร / src? ฉันสามารถทำสิ่งที่ชอบ …
135 linux  makefile 

5
ฉันจะสร้าง makefile อย่างง่ายสำหรับ gcc บน Linux ได้อย่างไร
ฉันมีสามไฟล์: program.c, และprogram.hheaders.h program.cรวมถึงและprogram.hheaders.h ฉันต้องการคอมไพล์ไฟล์นี้บน Linux โดยใช้gcc compiler ฉันไม่แน่ใจว่าจะทำอย่างไร Netbeans สร้างขึ้นมาสำหรับฉัน แต่มันว่างเปล่า
130 c  gcc  makefile 


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 

2
makefile รันเป้าหมายอื่น
ฉันมี makefile ที่มีโครงสร้างดังนี้: all : compile executable clean : rm -f *.o $(EXEC) ฉันตระหนักว่าฉันกำลังเรียกใช้ "make clean" อย่างสม่ำเสมอตามด้วย "clear" ในเทอร์มินัลของฉันก่อนที่จะเรียกใช้ "make all" ฉันชอบที่จะมีเทอร์มินัลที่สะอาดก่อนที่ฉันจะพยายามกรองข้อผิดพลาดในการคอมไพล์ C ++ ที่น่ารังเกียจ ดังนั้นฉันจึงพยายามเพิ่มเป้าหมายที่ 3: fresh : rm -f *.o $(EXEC) clear make all วิธีนี้ใช้งานได้ แต่นี่เป็นตัวอย่างที่สองของ make (ฉันเชื่อว่า) มีวิธีที่ถูกต้องในการรับฟังก์ชั่นเดียวกันโดยไม่ต้องใช้ make อินสแตนซ์ที่ 2 หรือไม่?
123 makefile 

19
เป็นไปได้ไหมที่จะสร้างตัวแปรสตริงหลายบรรทัดใน Makefile
ฉันต้องการสร้างตัวแปร makefile ที่เป็นสตริงหลายบรรทัด (เช่นเนื้อหาของการประกาศการเผยแพร่อีเมล) สิ่งที่ต้องการ ANNOUNCE_BODY=" Version $(VERSION) of $(PACKAGE_NAME) has been released It can be downloaded from $(DOWNLOAD_URL) etc, etc" แต่ดูเหมือนจะหาวิธีทำไม่ได้ เป็นไปได้ไหม?

5
คำสั่ง Multiline bash ใน makefile
ฉันมีวิธีที่สะดวกสบายมากในการรวบรวมโปรเจ็กต์ของฉันผ่านคำสั่ง bash สองสามบรรทัด แต่ตอนนี้ฉันต้องรวบรวมผ่าน makefile เมื่อพิจารณาว่าทุกคำสั่งทำงานในเชลล์ของตัวเองคำถามของฉันคืออะไรคือวิธีที่ดีที่สุดในการเรียกใช้คำสั่ง bash แบบหลายบรรทัดโดยขึ้นอยู่กับกันและกันใน makefile ตัวอย่างเช่นนี้: for i in `find` do all="$all $i" done gcc $all นอกจากนี้ใครบางคนสามารถอธิบายได้ว่าทำไมแม้แต่คำสั่งบรรทัดเดียวจึงbash -c 'a=3; echo $a > file'ทำงานได้อย่างถูกต้องในเทอร์มินัล แต่สร้างไฟล์เปล่าใน makefile case?
121 bash  makefile 

3
DESTDIR และ PREFIX ของ make
ฉันกำลังพยายามติดตั้งซอฟต์แวร์ไปยังไดเร็กทอรีเฉพาะ ฉันพบหลายวิธี แต่ไม่แน่ใจว่ามีความแตกต่างกันอย่างไร ./configure --prefix=*** make install DESTDIR=*** make install prefix=*** ฉันสับสนเกี่ยวกับการทำงานของทั้งสามอย่างนี้ พวกเขาบรรลุเป้าหมายเดียวกันหรือไม่?
120 c  linux  bash  makefile  configure 

3
สร้างเทียบกับสร้างรหัสตัวอย่าง?
ฉันสงสัยว่ามีโค้ดตัวอย่างสำหรับMakefiles ( make) และCMakeLists.txt( cmake) ที่ทั้งสองทำสิ่งเดียวกัน (ข้อแตกต่างเพียงอย่างเดียวคือรหัสที่เขียนขึ้นmakeและอีกอันในcmake) ฉันพยายามมองหา 'cmake vs make' แต่ไม่พบการเปรียบเทียบโค้ดใด ๆ การทำความเข้าใจความแตกต่างจะเป็นประโยชน์มากแม้ว่าจะเป็นเพียงกรณีธรรมดา ๆ ก็ตาม
120 makefile  cmake 

4
ทำไมต้อง. / กำหนดค่า; ทำให้; ทำการติดตั้ง เป็น 3 ขั้นตอนแยกกัน?
ทุกครั้งที่คุณรวบรวมข้อมูลจากแหล่งที่มาคุณจะต้องทำตาม 3 ขั้นตอนเดียวกัน: $ ./configure $ make $ make install ฉันเข้าใจว่ามันสมเหตุสมผลแล้วที่จะแบ่งขั้นตอนการติดตั้งออกเป็นขั้นตอนต่างๆ แต่ฉันไม่เข้าใจทำไมแต่ละ coder บนโลกนี้จึงต้องเขียนสามคำสั่งเดิมซ้ำแล้วซ้ำอีกเพื่อให้งานเดียวเสร็จ จากมุมมองของฉันมันจะสมเหตุสมผลอย่างยิ่งที่จะมีการ./install.shส่งสคริปต์โดยอัตโนมัติพร้อมกับซอร์สโค้ดซึ่งมีข้อความต่อไปนี้: #!/bin/sh ./configure make make install ทำไมคนถึงทำ 3 ขั้นตอนแยกกัน?

2
ฉันสามารถรวบรวมไฟล์. cpp ทั้งหมดใน src / ถึง. ของใน obj / แล้วเชื่อมโยงไปยังไบนารีใน. / ได้หรือไม่
ไดเรกทอรีโครงการของฉันมีลักษณะดังนี้: /project Makefile main /src main.cpp foo.cpp foo.h bar.cpp bar.h /obj main.o foo.o bar.o สิ่งที่ฉันต้องการ Makefile ของฉันจะทำจะรวบรวมทุก.cppไฟล์ใน/srcโฟลเดอร์.oไฟล์ใน/objโฟลเดอร์แล้วเชื่อมโยงทุก.oไฟล์ในเข้าไปในไบนารีการส่งออกในโฟลเดอร์ระดับบนสุด/obj/project ฉันไม่มีประสบการณ์กับ Makefiles เลยและฉันไม่แน่ใจจริงๆว่าจะค้นหาอะไรเพื่อให้บรรลุเป้าหมายนี้ นอกจากนี้นี่เป็นวิธีที่ "ดี" ในการทำเช่นนี้หรือมีแนวทางที่เป็นมาตรฐานมากกว่าสำหรับสิ่งที่ฉันกำลังพยายามทำอยู่หรือไม่

5
ไดเร็กทอรีเอาต์พุต / สร้าง CMake
ฉันค่อนข้างใหม่สำหรับ CMake และอ่านบทแนะนำเกี่ยวกับวิธีการใช้งานและเขียนสคริปต์ CMake ที่ซับซ้อน 50 บรรทัดเพื่อสร้างโปรแกรมสำหรับคอมไพเลอร์ 3 ตัว นี่อาจเป็นการสรุปความรู้ทั้งหมดของฉันใน CMake ตอนนี้ปัญหาของฉันคือฉันมีซอร์สโค้ดซึ่งมีโฟลเดอร์ที่ฉันไม่ต้องการสัมผัส / ยุ่งกับเมื่อฉันสร้างโปรแกรม ฉันต้องการให้ CMake และmakeเอาท์พุตไฟล์และโฟลเดอร์ทั้งหมดเข้ามา../Compile/ดังนั้นฉันจึงเปลี่ยนตัวแปรสองสามตัวในสคริปต์ CMake ของฉันสำหรับสิ่งนั้นและมันก็ใช้ได้ในบางครั้งเมื่อฉันทำสิ่งนี้บนแล็ปท็อปของฉัน: Compile$ cmake ../src Compile$ make โดยที่ฉันมีผลลัพธ์ที่สะอาดในโฟลเดอร์ที่ฉันอยู่ตอนนี้ซึ่งเป็นสิ่งที่ฉันกำลังมองหา ตอนนี้ฉันย้ายไปที่คอมพิวเตอร์เครื่องอื่นและคอมไพล์ CMake 2.8.11.2 ใหม่และฉันเกือบจะกลับไปที่สี่เหลี่ยมจัตุรัส! มันมักจะรวบรวมสิ่งนั้นไว้ในsrcโฟลเดอร์ที่ฉันCMakeLists.txtอยู่ ส่วนที่ฉันเลือกไดเร็กทอรีในสคริปต์ CMake ของฉันคือ: set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/) set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY …
116 c++  build  makefile  cmake  output 

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