linux下cmake编译C++工程之总结篇

昨天正式把项目编译完成,经历了一周的摸索和折磨后,最后也想: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)

add_subdirectory这句会自动迭代搜索project1下的cmakelists.txt并解析执行。所以需要在project1下也建立cmakelists.txt:

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)

需要包含什么目录就写 INCLUDE_DIRECTORIES,如果需要依赖lib就需要写 TARGET_LINK_LIBRARIES。另外就是用了父cmake预定义的一些变量,这样就可以很容易地更改配置。

然后再project目录下 执行cmake .

make

就可以生成project1.exe了。

linux下cmake编译C++工程之总结篇,码迷,mamicode.com

时间: 2024-10-12 21:27:14

linux下cmake编译C++工程之总结篇的相关文章

linux下cmake编译安装、配置和卸载mysql

WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [[email protected]][/home/xiluhua]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # 2.到mysql官网下CentOS 7对应的版本, 2.1.选择社区版(红框) # 3.将下载的安装包放到上传到/usr/local/mysql文件夹下(自己新建准备),解压缩 准备工作1.安装cmak

ubuntu下,VSCode采用cmake编译C++工程

首先在VSCode中下载CMake和CMake Tools两个插件. 选中CMake Tools,可以看到在VSCode中如何使用cmake编译C++工程的教程. 官网教程 最重要且最实用: https://vector-of-bool.github.io/docs/vscode-cmake-tools/getting_started.html 细致讲解: https://vector-of-bool.github.io/docs/vscode-cmake-tools/configuring.h

LINUX下如何编译MYSQL源代码

LINUX下如何编译MYSQL源代码 Linux下面编译MYSQL的源代码方式如下: 首先下载源代码:选择下面这个版本: 下载相应的CMake, gcc, bison等所依赖组件: a) 安装cursor library: b) 安装gcc 和 gcc-c++ c) 下载boost:  用g++ 或者根据不同的参数,指定参数,然后运行CMAKE: cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/loca

FFmpeg在Linux下安装编译过程

转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下安装编译过程,用的是CentOS, 总体过程比较顺利,就是在ffmpeg等的时间稍长点.没什么技术难点.仅当记录. 关于FFmpeg FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包

在linux下如何编译C++程序

一.GCC(GNU Compiler Collection)是linux下最主要的编译工具,GCC不仅功能非常强大,结构也异常灵活.它可以通过不同的前端模块来支持各种语言,如Java.Fortran.Pascal.Modula-3和Ada g++是GCC中的一个工具,专门来编译C++语言的. GCC的参数有:( 也是分步实现) -E  让GCC在预处理结束后停止编译  g++ -E hello.cpp  -o  hello.i -c  将hello.i编译成目标代码 g++  -c  hello

图文介绍windows下实现编译ffmpeg工程的详细步骤

本文来自:http://www.cuplayer.com/player/PlayerCode/FFmpeg/2014/0706/1401.html 图文介绍windows下实现编译ffmpeg工程的详细步骤: 1.搭建 MinGW 的编译环境 下载yasm,地址:http://yasm.tortall.net/Download.html 改名为yasm.exe放到C:\WINDOWS\system32 或者 C:\MinGW\msys\1.0\bin文件夹下. 下载 mingw-get-inst

linux 下手动编译安装无线网卡驱动

//先参照 <本地yum源安装GCC >安装好gcc hp的笔记本上安装了CentOS6.3,没有安装无线网卡驱动,安装这个驱动,在Google上找了好多资料,最后终于解决了这个问题.在这里做点记录,希望也能帮到别人. 我的机子是32位,CentOS的内核版本是2.6.32-279.19.1.el6.i686,下载的无线网卡驱动是hybrid-portsrc_x86_32-v5_100_82_112.tar.gz 下面是具体的步骤 一:确定无线网卡的型号,驱动下载 第一步要确定机子的无线网卡型

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl 需要ssl的支持,如果不需要ssl支持,请跳过这一步 复制代码代码如下: # yum install openssl* 3.gzip 类库安装 复制代码代码如下: yum install zlib zlib-

linux 下安装编译配置 QT

打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来. 软件环境 Linux:Ubuntu 12.04 X86 QT:4.8.4 关于QT安装 QT的早期版本和现在版本有点变化,提供的文件也不尽相同,最新的版本为5.0,我这里用的是4.8.4,一个完整的QT应该包括QT库.IDE也就是QT creator,在Linux下的安装中,目前看到的主要有三种方法: 1..bin