मुझे कुछ अप्रत्याशित परिणाम मिल रहे हैं जो एक मेकफ़ाइल को दूसरे से कॉल करते हैं। मेरे पास दो मेकफ़ाइल हैं, जिन्हें /path/to/project/makefile
कहा जाता है और जिसे /path/to/project/gtest-1.4.0/make/Makefile
कहा जाता है। मैं बाद वाले को कॉल करने का प्रयास कर रहा हूं। में/path/to/परियोजना/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:
rm -f $(TESTS) gtest.a gtest_main.a *.o
जारी करने वाले निम्नलिखित है:
cd /path/to/project
make
आउटपुट:
make -f ./gtest-1.4.0/make/Makefile
make[1]: Entering directory `/path/to/project'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/path/to/project'
हालांकि, जब मैं इन्हें जारी करता हूं आदेश:
cd /path/to/project
make clean
मैं देख रहा हूँ:
make -f gtest-1.4.0/make/Makefile clean
make[1]: Entering directory `/path/to/project'
rm -f gtest.a gtest_main.a *.o
make[1]: Leaving directory `/path/to/project'
मुझे समझ नहीं आता: दोनों मामलों में, /path/to/project/makefile
कह रहा है कि यह वर्तमान कार्यशील निर्देशिका में प्रवेश कर रहा है। पहले मामले में, ऐसा नहीं लगता कि यह करने के लिए काम करता है (जब यह करता है) और दूसरे मामले में, यह उपयुक्त निर्देश (जब आउटपुट मुझे गलत निर्देशिका में देख रहा है) ढूंढने में सक्षम है) फिर भी यह कोशिश करता है rm
/path/to/project
में /path/to/makefile/gtest-1.4.0/make/
के बजाय चलाने के लिए।
क्या मुझे एक दूसरे से मेकफ़ाइल कॉल करने के लिए कुछ मौलिक याद आ रही है? क्या मैंने एक आक्रामक वैचारिक गलती की है, या एक आम गड़बड़ी मारा है? मैं निर्देशिकाओं को प्रभावी रूप से कैसे बदलूं और पहले मेकफ़ाइल को पहले से कैसे कॉल करूं? मेरी समझ यह थी कि बस make -f <name>
पर कॉल करना पर्याप्त होगा।
यह बैश में 3.81 बना/बना देता है।
मुझे लगता है, बजाय 'बनाने की -f gtest-1.4.0/बनाने/मेकफ़ाइल क्लीन 'आप बेहतर कहते हैं' $ (मेक) -सी gtest-1.4.0/साफ करें '। आपने फोनी लक्ष्यों को परिभाषित क्यों नहीं किया है? –
http://stackoverflow.com/questions/3494999/subdirectories-and-makefiles –