标签:style blog http io 2014 for
昨天正式把项目编译完成,经历了一周的摸索和折磨后,最后也想:oh,it‘s so easy!
但是过程确实困难的,因为cmake官方只有API的解释,而且解释的不是很清楚。
一般项目都是狠复杂的层级关系
这种如何来写cmake呢?
首先要知道一个很重要的东西,cmake是一定要从顶级目录开始,才能继承目录,比如直接在project1目录里用../lib是无效的,因为cmake并不知道;
而如果在project下建立cmakelists.txt 然后add_subdir(project1),project1里就可以这么用了。
现在就写一下简单的实现:
首先是project下的cmakeLists.txt:
PROJECT(SERVER) cmake_minimum_required(VERSION 2.8) add_definitions(-std=c++11) SET(ENV{Platform} x64) SET(ENV{Configuration} Debug) SET(CompilerSetting "clang") SET(LIBRARY_OUTPUT_PATH lib/$ENV{Platform}/$ENV{Configuration}) SET(EXECUTABLE_OUTPUT_PATH bin/$ENV{Platform}/$ENV{Configuration}) SET(LINK_LIBPATH Lib/$ENV{Platform}/$ENV{Configuration}) add_subdirectory(project1)
set(ProjectName project1) PROJECT(${ProjectName}) INCLUDE_DIRECTORIES(../include) AUX_SOURCE_DIRECTORY(. DIR_SRCS) SET(CMAKE_CXX_COMPILER ${CompilerSetting}) IF ($ENV{Configuration} STREQUAL Debug) SET(CMAKE_BUILD_TYPE Debug) ELSE() SET(CMAKE_BUILD_TYPE Release) ENDIF() LINK_DIRECTORIES(${LINK_LIBPATH}) IF ($ENV{Configuration} STREQUAL Debug) add_definitions(-g -lpthread) SET(CMAKE_CXX_FLAGS_DEBU "$ENV{CXXFLAGS} -O0 -Wall") ELSE() SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") ENDIF() ADD_EXECUTABLE(${ProjectName} ${DIR_SRCS}) TARGET_LINK_LIBRARIES ( ${ProjectName} pthread)
然后再project目录下 执行cmake .
make
就可以生成project1.exe了。
linux下cmake编译C++工程之总结篇,码迷,mamicode.com
标签:style blog http io 2014 for
原文地址:http://blog.csdn.net/boyxiaolong/article/details/24708201