0
我的Makefile如下所示:讓-j作品,但-jN不工作
test:
make clean
make test2
test2: CXX=g++
test2: all
CPP_FILES := $(wildcard tmp/*.cpp)
OBJ := $(CPP_FILES:.cpp=.o)
all: ${OBJ}
${CXX} ${OBJ} ${LIB_PATH} ${LIBS} ${CXX_FLAGS} -o output.exe
%.o: %.cpp
${CXX} ${CXX_FLAGS} ${INCLUDE_PATH} -c $< -o [email protected]
所有.o文件可以(也應該)並行構建。如果我執行「make -j」,這是行得通的,但如果我通過「make -j4」將進程數量限制到某個固定數量(例如4),則失敗。這將導致以下消息:
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
有人能請我指出我的錯誤嗎?爲什麼「make -j」工作,而「make -j4」提供了這個錯誤信息?
謝謝!
你用的是什麼'make'?不同的功能有不同的實現。另外,你說你正在用'-j4'運行這個,但是錯誤消息說了一些關於'-j1'的東西。 – Cubic
千萬不要從make調用make,使用'$(MAKE)'或者其他一些魔術字符串。 –
「魔術字符串」正好是'$(MAKE)'或'$ {MAKE}'(它們完全相同)。或者你可以在配方前添加「+」字符。信息在這裏:http://www.gnu.org/software/make/manual/html_node/MAKE-Variable.html然而,由於其他原因,你應該總是使用'$(MAKE)'或'$ {MAKE}'。 – MadScientist