HUSTOJ分爲前端和後端兩部分 web和core。
後端又分爲judge_client judged sim 三部分
然後本文寫的是 core,judge_client,judged三個文件夾下面的makefile,(sim部分暫且還沒看)讀懂makefile可以有效的幫助你理解大體的運行流程。如果有好的見解,歡迎私聊我交流或者在下方評論 我的個人郵箱:[email protected]
#!/bin/bash
cd judged //進入到judged
make
chmod +x judged //對judged授予可執行權限
cp judged /usr/bin //複製judged到bin目錄下
cd ../judge_client // 返回上一級後進入到judge_client
make
chmod +x judge_client //對judge_client授予可執行權限
cp judge_client /usr/bin //複製judge_client到bin目錄下
cd ../sim/sim_3_01 //返回上一級後進入到sim_3_01
make fresh
make exes
chmod +x sim* //對sim作爲前綴的文件授予可執行權限
cp sim_c.exe /usr/bin/sim_c //複製sim_c.exe到 /usr/bin/sim_c下
cp sim_c++.exe /usr/bin/sim_cc//複製sim_c++.exe到 /usr/bin/sim_cc下
cp sim_java.exe /usr/bin/sim_java //複製sim_java.exe 到/usr/bin/sim_java
cp sim_pasc.exe /usr/bin/sim_pas //複製sim_pasc.exe 到/usr/bin/sim_pas
cp sim_text.exe /usr/bin/sim_text //複製sim_text.exe 到/usr/bin/sim_text
cp sim_lisp.exe /usr/bin/sim_scm //複製sim_lisp.exe 到/usr/bin/sim_scm
cd ..
cp sim.sh /usr/bin //複製sim.sh 到/usr/bin
chmod +x /usr/bin/sim.sh //對該文件授予可執行權限
ln -fs /usr/bin/sim_c /usr/bin/sim_cc 2>&1 > /dev/null
echo "done!"
#judge_client/makefile
all: judge_client.cc
g++ -Wall -c -I/usr/local/mysql/include/mysql -I/usr/include/mysql judge_client.cc
g++ -Wall -o judge_client judge_client.o -L/usr/local/mysql/lib/mysql -L/usr/lib/mysql -L/usr/lib64/mysql -lmysqlclient
// -Wall編譯後顯示所有警告 -I將按照後面那個目錄搜索頭文件
//-L 編譯程序按照-L指定的路進去尋找庫文件
#judged/makefile
all: judged.cc
g++ -Wall -c -I/usr/local/mysql/include/mysql -I/usr/include/mysql judged.cc
g++ -Wall -o judged judged.o -L/usr/local/mysql/lib/mysql -L/usr/lib/mysql -L/usr/lib64/mysql -lmysqlclient