工作代码片段-cmake

本文介绍了一个从Makefile转向CMake的真实案例。随着项目的扩大,原有的Makefile方式变得难以维护,故引入CMake来简化构建流程。文章详细展示了CMakeLists.txt文件的配置方法,并说明了CMake提供的高亮功能对于提升构建效率的重要性。

为什么使用cmake其实原有项目直接使用的makefile来做构建的,项目规模的不断扩大,开发模块增加,不能要求所有的开发人员都自己写makefile,模板的方式解决了一部分问题,但是比较麻烦,考虑采用automake的方式来做,但是最大的问题是在构建时代码出现错误的位置从输出中查找比较困难,而cmake提供了高亮的功能,这恰是我最需要的。

cmake根目录CMakeLists.txt:

project(fep)
cmake_minimum_required(VERSION 2.6)
set(PRO_DIR ${PROJECT_SOURCE_DIR}/../../)
set(LIBRARY_OUTPUT_PATH ${PRO_DIR}/lib/fep)
set(EXECUTABLE_OUTPUT_PATH ${PRO_DIR}/bin/fep)

include_directories(platform/include)
add_subdirectory(platform)
add_subdirectory(test)
find_library(pla platform ../../../lib/fep)
find_package(CppUnit)
include_directories(${CPPUNIT_INCLUDE_DIR})
add_executable(test test.cpp TestMain.cpp BaseTest.cpp)
#find_package(Qt4)
#include(${QT_USE_FILE})
target_link_libraries(test dl)
target_link_libraries(test platform)
target_link_libraries(test ${CPPUNIT_LIBRARIES})
target_link_libraries(test event)
target_link_libraries(test pthread)
#target_link_libraries(test ${QT_LIBRARIES})
其中CppUnit的支持是后来添加的插件。

test目录下CMakeLists.txt:

project(boosttest)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_BUILD_TYPE debug)
add_executable(baseserver baseserver.cpp error_code.cpp)
target_link_libraries(baseserver pthread)
target_link_libraries(baseserver rt)
target_link_libraries(baseserver aio)
platform目录下CMakeLists.txt,这是用来生成so的:

aux_source_directory(cpp src)
aux_source_directory(exception src)
include_directories(include)
add_library(platform SHARED ${src})

构建过程很简单:cmake .;make


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值