Add Makefile generator for Linux

This commit is contained in:
Kirigaya Kazuto 2017-07-06 22:55:33 +08:00
parent cdddfc059e
commit a19874c6da
2 changed files with 74 additions and 14 deletions

View File

@ -1,14 +0,0 @@
CXXFLAGS = -std=c++14 -Wall -O2 -D__LINUX__ -Iinclude
LDFLAGS =
LDLIBS = -lstdc++ -lSDL2_image -lSDL2_net -lSDL2_ttf -lSDL2_mixer -lSDL2_test -lSDL2 -shared
PROG = program_name
OBJS = MiniEngine.o MiniEngine_Android.o MiniEngine_Event.o MiniEngine_Widget.o sqlite/sqlite3.o MiniEngine_SQLite.o
all: $(PROG)
$(PROG): $(OBJS)
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LDLIBS) -o $@ $(OBJS) `sdl2-config --cflags --libs`
clean:
rm -f $(PROG) $(OBJS)

74
makefile_linuxgen.cpp Normal file
View File

@ -0,0 +1,74 @@
/// makefile_linuxgen.cpp
/// Under MIT License. Part of MiniEngine Project.
/// You can run this code to generate a makefile for linux.
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
char buff[1024];
int main()
{
printf("#Detecting source files...#\n");
/// Find files
system("find . -name \"*.cpp\" > cpplist.txt ");
system("find . -name \"*.c\" > clist.txt ");
vector<string> dvec;
FILE* fp=fopen("cpplist.txt","r");
memset(buff,0,1024);
while(fgets(buff,1024,fp)!=nullptr)
{
int len=strlen(buff);
if(buff[len-1]=='\n') buff[len-1]=0;
char* p=strstr(buff,".cpp");
sprintf(p,".o");
string d(buff);
dvec.push_back(d);
memset(buff,0,1024);
}
fclose(fp);
vector<string> ccd;
fp=fopen("clist.txt","r");
memset(buff,0,1024);
while(fgets(buff,1024,fp)!=nullptr)
{
int len=strlen(buff);
if(buff[len-1]=='\n') buff[len-1]=0;
char* p=strstr(buff,".c");
sprintf(p,".o");
string d(buff);
dvec.push_back(d);
memset(buff,0,1024);
}
fclose(fp);
printf("#Generating makefile...#\n");
fp=fopen("makefile","w");
fprintf(fp,
"CXXFLAGS = -std=c++14 -Wall -O2 -D__LINUX__ -Iinclude\n"
"LDFLAGS = \n"
"LDLIBS = -lstdc++ -lSDL2_image -lSDL2_net -lSDL2_ttf -lSDL2_mixer -lSDL2_test -lSDL2 -shared\n"
"\n"
"PROG = your_project\n"
"OBJS = ");
for(auto& d:dvec)
{
fprintf(fp,"%s ",d.c_str());
}
fprintf(fp,"\n");
fprintf(fp,
"all: $(PROG)\n"
"\n"
"$(PROG): $(OBJS)\n"
"\t$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LDLIBS) -o $@ $(OBJS) `sdl2-config --cflags --libs`\n"
"\n"
"clean:\n"
"\trm -f $(PROG) $(OBJS))\n");
fclose(fp);
printf("#End of Generation#\n");
return 0;
}