並列処理するため”make all -j12″を実行した場合に初回エラーになる不具合の解決策が見つかりました。
エラー内容を確認すると、オブジェクトファイルが揃わないうちにリンクしていることが判明しました。そこでMakefile内の順番を変えて、必ずコンパイルが全て終わってからリンクするようにしました。
これで確実に並列処理できるようになりました。
# コンパイル後リンク ← この部分を前にもってきた
.PHONY: all
all: $(TARGET)
# oファイルから実行ファイルとappファイル作成
$(TARGET): $(OBJS)
$(COMPILER) -o $(TARGETDIR)/$@ $(OBJS) $(LIBRARY0) $(LDFLAGS) $(LIBRARY)
mkdir -p $(TARGET).app/Contents/MacOS
mkdir -p $(TARGET).app/Contents/Resources
cp $(TARGETDIR)/$(TARGET) $(TARGET).app/Contents/MacOS/$(TARGET)
cp ./images/$(TARGET).icns $(TARGET).app/Contents/Resources
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $(TARGET).app/Contents/Info.plist
echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">" >> $(TARGET).app/Contents/Info.plist
echo "<plist version=\"1.0\">" >> $(TARGET).app/Contents/Info.plist
echo "<dict>" >> $(TARGET).app/Contents/Info.plist
echo " <key>CFBundleExecutable</key>" >> $(TARGET).app/Contents/Info.plist
echo " <string>$(TARGET)</string>" >> $(TARGET).app/Contents/Info.plist
echo " <key>CFBundleIconFile</key>" >> $(TARGET).app/Contents/Info.plist
echo " <string>$(TARGET).icns</string>" >> $(TARGET).app/Contents/Info.plist
echo " <key>CFBundleIdentifier</key>" >> $(TARGET).app/Contents/Info.plist
echo " <string>com.yourcompany.$(TARGET)</string>" >> $(TARGET).app/Contents/Info.plist
echo " <key>CFBundleName</key>" >> $(TARGET).app/Contents/Info.plist
echo " <string>$(TARGET)</string>" >> $(TARGET).app/Contents/Info.plist
echo " <key>CFBundleVersion</key>" >> $(TARGET).app/Contents/Info.plist
echo " <string>1.0</string>" >> $(TARGET).app/Contents/Info.plist
echo "</dict>" >> $(TARGET).app/Contents/Info.plist
echo "</plist>" >> $(TARGET).app/Contents/Info.plist
# 全ファイル削除
.PHONY: clean
clean:
rm -rf $(OBJS) $(TARGETDIR)/$(TARGET) $(TARGET).app