这是项目的整个目录结构
cmake_minimum_required(VERSION 2.6)
project (server)
SET(CMAKE_CXX_FLAGS_DEBUG "-g -ggdb -Wall -Wno-unknown-pragmas")
SET(CMAKE_CXX_FLAGS "-std=c++0x -Wno-deprecated")
SET(CMAKE_CXX_FLAGS_RELEASE "-g -O2")
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--hash-style=sysv")
include_directories ("${PROJECT_SOURCE_DIR}/lib/linux/include" "${PROJECT_SOURCE_DIR}/lib/linux/include/mysql" "${PROJECT_SOURCE_DIR}/lib/boost_1_53_0" "${PROJECT_SOURCE_DIR}/event" )
link_directories ("${PROJECT_SOURCE_DIR}/lib/linux/lib")
add_subdirectory (common)
add_subdirectory (event)
add_subdirectory (logic)
add_subdirectory (net)
add_subdirectory (worldd)
add_subdirectory (gamed)
add_subdirectory (pvpwar/battled)
add_subdirectory (pvpwar/matchd)
add_executable (gamed gamed/Daemon.cpp)
add_executable (worldd worldd/worldd.cpp)
add_executable (battled pvpwar/battled/battle.cpp)
add_executable (matchd pvpwar/matchd/match.cpp)
target_link_libraries (gamed game logic event common net protobuf log4cxx config++ tokyotyrant mysqlclient)
target_link_libraries (worldd world logic event common net protobuf log4cxx config++ tokyotyrant)
target_link_libraries (battled battle logic event common net protobuf log4cxx config++ )
target_link_libraries (matchd match logic event common net protobuf log4cxx config++ tokyotyrant mysqlclient)
cd net
rm -f CMakeLists.txt
echo "# CMakeLists file">>CMakeLists.txt
echo "add_library(net NetCache.cpp NetHandler.cpp ProtocolHandler.cpp )">>CMakeLists.txt
cd ..
cd common
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(common ">>CMakeLists.txt
ls xml/*.cpp>>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ..
cd event
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(event ">>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ..
cd gamed
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(game ">>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
ls event/*.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ..
cd logic
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(logic ">>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ..
cd worldd
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(world ">>CMakeLists.txt
ls event/*.cpp>>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ..
cd pvpwar/battled
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(battle ">>CMakeLists.txt
ls event/*.cpp>>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ../..
cd pvpwar/matchd
rm -f CMakeLists.txt
echo "# CMakeLists file" >>CMakeLists.txt
echo "">>CMakeLists.txt
echo "add_library(match ">>CMakeLists.txt
ls event/*.cpp>>CMakeLists.txt
ls *.cpp>>CMakeLists.txt
echo ") ">>CMakeLists.txt
cd ../..
此时在主CmakeList.txt文件下,
先执行./autoCeateSubCmakeList.sh,目的是生成子文件夹下CMakeLists.txt
然后执行cmake . 目的是让主CMakeList根据配置还有根据子文件夹下的CMakeList.txt生成makefile
然后就可以执行make的指令进行编译了
#!/bin/bash
set -x
svn up
./buildcmake.sh
make -j 8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)