{"id":938,"date":"2014-03-07T07:24:26","date_gmt":"2014-03-07T07:24:26","guid":{"rendered":"http:\/\/blog.zhukunqian.com\/?p=938"},"modified":"2014-03-20T13:18:40","modified_gmt":"2014-03-20T13:18:40","slug":"%e5%ad%a6%e4%b9%a0%e4%b8%8bmakefile","status":"publish","type":"post","link":"https:\/\/blog.zhukunqian.com\/?p=938","title":{"rendered":"\u5b66\u4e60\u4e0bmakefile"},"content":{"rendered":"<p>.PHONY : mingw ej2d linux undefined<\/p>\n<p>CFLAGS = -g -Wall -Ilib -D EJOY2D_OS=$(OS)<\/p>\n<p>\/\/ CFLAGS gcc\u63a5\u6536\u7684\u53c2\u6570<\/p>\n<p>\/\/ -g \u751f\u6210\u8c03\u8bd5\u4fe1\u606f\uff0c\u53ef\u7528\u6765gdb\u8c03\u8bd5<\/p>\n<p>\/\/ -Wall \u8f93\u51fagcc\u7ffb\u8bd1\u65f6\u751f\u6210\u7684\u8b66\u544a\u4fe1\u606f<\/p>\n<p>\/\/ -Ilib \u5c06lib\u76ee\u5f55\u6dfb\u52a0\u81f3\u7f16\u8bd1\u67e5\u627e\u8def\u5f84\uff0c\u7528\u6765\u67e5\u627e\u5934\u6587\u4ef6<\/p>\n<p>\/\/ gcc\u4e2d\u547d\u4ee4\u884c\u4ee5tab\u5f00\u5934<\/p>\n<p>LDFLAGS :=<\/p>\n<p>SRC := \\<br \/>\nlib\/shader.c \\<br \/>\nlib\/lshader.c \\<br \/>\nlib\/ejoy2dgame.c \\<br \/>\nlib\/fault.c \\<br \/>\nlib\/screen.c \\<br \/>\nlib\/texture.c \\<br \/>\nlib\/ppm.c \\<br \/>\nlib\/spritepack.c \\<br \/>\nlib\/sprite.c \\<br \/>\nlib\/lsprite.c \\<br \/>\nlib\/matrix.c \\<br \/>\nlib\/lmatrix.c \\<br \/>\nlib\/dfont.c \\<br \/>\nlib\/label.c \\<br \/>\nlib\/particle.c \\<br \/>\nlib\/lparticle.c \\<br \/>\nlib\/scissor.c<\/p>\n<p>UNAME=$(shell uname)<br \/>\nSYS=$(if $(filter Linux%,$(UNAME)),linux,\\<br \/>\n$(if $(filter MINGW%,$(UNAME)),mingw,\\<br \/>\n$(if $(filter Darwin%,$(UNAME)),macosx,\\<br \/>\nundefined\\<br \/>\n)))<\/p>\n<p>all: $(SYS)<\/p>\n<p>undefined:<br \/>\n@echo &#8220;I can&#8217;t guess your platform, please do &#8216;make PLATFORM&#8217; where PLATFORM is one of these:&#8221;<br \/>\n@echo &#8221;\u00a0\u00a0\u00a0\u00a0\u00a0 linux mingw macosx&#8221;<\/p>\n<p>mingw : OS := WINDOWS<br \/>\nmingw : TARGET := ej2d.exe<br \/>\nmingw : CFLAGS += -I\/usr\/include -I\/usr\/local\/include<br \/>\nmingw : LDFLAGS += -L\/usr\/bin -lgdi32 -lglew32 -lopengl32 -L\/usr\/local\/bin -llua52<br \/>\nmingw : SRC += mingw\/window.c mingw\/winfw.c mingw\/winfont.c<\/p>\n<p>mingw : $(SRC) ej2d<\/p>\n<p>linux : OS := LINUX<br \/>\nlinux : TARGET := ej2d<br \/>\nlinux : CFLAGS += -I\/usr\/include -I\/usr\/local\/include $(shell freetype-config &#8211;cflags)<br \/>\nlinux : LDFLAGS +=\u00a0 -lGLEW -lGL -lX11 -lfreetype -llua -lm -Wl,-E<br \/>\nlinux : SRC += posix\/window.c posix\/winfw.c posix\/winfont.c<\/p>\n<p>linux : $(SRC) ej2d<\/p>\n<p>macosx : OS := MACOSX<br \/>\nmacosx : TARGET := ej2d<br \/>\nmacosx : CFLAGS += -I\/usr\/X11R6\/include -I\/usr\/include -I\/usr\/local\/include $(shell freetype-config &#8211;cflags) -D __MACOSX<br \/>\nmacosx : LDFLAGS += -L\/usr\/X11R6\/lib\u00a0 -lGLEW -lGL -lX11 -lfreetype -llua -lm -Wl,-E -ldl<br \/>\nmacosx : SRC += posix\/window.c posix\/winfw.c posix\/winfont.c<\/p>\n<p>macosx : $(SRC) ej2d<\/p>\n<p>ej2d :<br \/>\ngcc $(CFLAGS) -o $(TARGET) $(SRC) $(LDFLAGS)<\/p>\n<p>\/\/ gcc\u9700\u8981\u4ee5tab\u5f00\u5934<\/p>\n<p>clean :<br \/>\n-rm -f ej2d.exe<br \/>\n-rm -f ej2d<\/p>\n<pre class=\"brush: bash; gutter: true\">.PHONY : all clean \r\n\r\nCFLAGS = -g -Wall \r\nLDFLAGS = -lpthread -llua -lm\r\n\r\nuname_S := $(shell sh -c &#039;uname -s 2&gt;\/dev\/null || echo not&#039;)\r\nifeq ($(uname_S), Darwin)\r\n\tSHARED = -fPIC -dynamiclib -Wl,-undefined,dynamic_lookup\r\n\/\/ -fPIC \u751f\u6210\u7684\u5730\u5740\u6539\u4e3a\u76f8\u5bf9\u5730\u5740\uff0c\u751f\u6210\u5171\u4eab\u5e93\u65f6\u9700\u8981\u6307\u5b9a\u4e3a\u76f8\u5bf9\u5730\u5740\r\n\/\/ -dynamiclib darwin\u7cfb\u7edf\u4e2d\u751f\u6210\u52a8\u6001\u94fe\u63a5\u5e93\u53c2\u6570\r\n\/\/ -Wl,option \u5c06option\u5f53\u505a\u4e00\u4e2a\u53c2\u6570\u4f20\u7ed9linker\r\nelse\r\n\tLDFLAGS += -lrt -Wl,-E\r\n\tSHARED = -fPIC --shared\r\nendif\r\n\r\nifneq ($(uname_S), FreeBSD)\r\n\tLDFLAGS += -ldl\r\nendif\r\n\r\nall : \\\r\n  skynet \\\r\n  service\/snlua.so \\\r\n  service\/logger.so \\\r\n  service\/gate.so \\\r\n  service\/client.so \\\r\n  service\/master.so \\\r\n  service\/multicast.so \\\r\n  service\/tunnel.so \\\r\n  service\/harbor.so \\\r\n  service\/localcast.so \\\r\n  luaclib\/skynet.so \\\r\n  luaclib\/socketdriver.so \\\r\n  luaclib\/int64.so \\\r\n  luaclib\/mcast.so \\\r\n  luaclib\/bson.so \\\r\n  luaclib\/mongo.so \\\r\n  client\r\n\r\nskynet : \\\r\n  skynet-src\/skynet_main.c \\\r\n  skynet-src\/skynet_handle.c \\\r\n  skynet-src\/skynet_module.c \\\r\n  skynet-src\/skynet_mq.c \\\r\n  skynet-src\/skynet_server.c \\\r\n  skynet-src\/skynet_start.c \\\r\n  skynet-src\/skynet_timer.c \\\r\n  skynet-src\/skynet_error.c \\\r\n  skynet-src\/skynet_harbor.c \\\r\n  skynet-src\/skynet_multicast.c \\\r\n  skynet-src\/skynet_group.c \\\r\n  skynet-src\/skynet_env.c \\\r\n  skynet-src\/skynet_monitor.c \\\r\n  skynet-src\/skynet_socket.c \\\r\n  skynet-src\/socket_server.c \\\r\n  luacompat\/compat52.c\r\n\tgcc $(CFLAGS) -Iluacompat -o $@ $^ -Iskynet-src $(LDFLAGS)\r\n\r\nluaclib:\r\n\tmkdir luaclib\r\n\r\nservice\/tunnel.so : service-src\/service_tunnel.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nservice\/multicast.so : service-src\/service_multicast.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nservice\/master.so : service-src\/service_master.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nservice\/harbor.so : service-src\/service_harbor.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nservice\/logger.so : skynet-src\/skynet_logger.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nservice\/snlua.so : service-src\/service_lua.c service-src\/luacode_cache.c service-src\/luaalloc.c\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src\r\n\r\nservice\/gate.so : service-src\/service_gate.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nservice\/localcast.so : service-src\/service_localcast.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nluaclib\/skynet.so : lualib-src\/lua-skynet.c lualib-src\/lua-seri.c lualib-src\/trace_service.c lualib-src\/timingqueue.c | luaclib\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src -Iservice-src -Ilualib-src\r\n\r\nservice\/client.so : service-src\/service_client.c\r\n\tgcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src\r\n\r\nluaclib\/socketdriver.so : lualib-src\/lua-socket.c | luaclib\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src -Iservice-src\r\n\r\nluaclib\/int64.so : lua-int64\/int64.c | luaclib\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat -O2 $^ -o $@ \r\n\r\nluaclib\/mcast.so : lualib-src\/lua-localcast.c | luaclib\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src -Iservice-src\r\n\r\nluaclib\/bson.so : lualib-src\/lua-bson.c | luaclib\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ \r\n\r\nluaclib\/mongo.so : lualib-src\/lua-mongo.c | luaclib\r\n\tgcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ \r\n\r\nclient : client-src\/client.c\r\n\tgcc $(CFLAGS) $^ -o $@ -lpthread\r\n\r\nclean :\r\n\trm skynet client service\/*.so luaclib\/*.so<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>.PHONY : mingw ej2d linux undefined CFLA &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/blog.zhukunqian.com\/?p=938\">\u7ee7\u7eed\u9605\u8bfb &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=\/wp\/v2\/posts\/938"}],"collection":[{"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=938"}],"version-history":[{"count":4,"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=\/wp\/v2\/posts\/938\/revisions"}],"predecessor-version":[{"id":974,"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=\/wp\/v2\/posts\/938\/revisions\/974"}],"wp:attachment":[{"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhukunqian.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}