windows下使用cmake+mingw配置makefile

前面一节说了cmake简易使用,但是实际开发中项目文件非常多,使用哪种简易方式会导致代码十分混乱,因此本文介绍一种cmake管理大型项目的demo流程。

具体步骤如下:

1.创建相关的项目目录

[cpp] view plain copy

  1. cmd
  2. mkdir hello
  3. cd hello
  4. mkdir inlude lib src debug

其中inlucde用来存放头文件,lib用来存放库文件,src用来存放源程序,debug用来作调试,类似于qt等IDE环境的配置

[cpp] view plain copy

  1. cd src
  2. mkdir  main  util

其中main用来存放主程序(这里以main.cpp为例),util用来存放相关的库源程序(这里以hello.cpp为例)
2.创建相关的源文件 
在include中添加项目相关的头文件(这里以hello.h为例):

[cpp] view plain copy

  1. hello.h
  2. #ifndef _HELLO_H_
  3. #define _HELLO_H_
  4. extern int hello();
  5. #endif

在main中添加主程序main.cpp如下:

[cpp] view plain copy

  1. #include <iostream>
  2. #include "hello.h"
  3. int main(){
  4. hello();
  5. return 0;
  6. }

在util中添加hello.cpp如下:

[cpp] view plain copy

  1. #include <iostream>
  2. using namespace std;
  3. int hello(){
  4. cout << "hello word cmake!!!" <<  endl;
  5. return 0;
  6. }

3.创建相关的配置文件CMakeLists.txt:
在顶级目录hello中添加CMakeLists.txt如下:

[cpp] view plain copy

  1. <pre name="code" class="cpp">PROJECT(HELLO)#设置工程名
  2. ADD_SUBDIRECTORY(src)
  3. CMAKE_MINIMUM_REQUIRED(VERSION 3.7)#设置版本号
  4. MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
  5. MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})

这里定义了子目录src,用以递归的调用src中的CMakeLists.txt

src目录中添加CMakeLists.txt如下:

[cpp] view plain copy

  1. ADD_SUBDIRECTORY(util)
  2. ADD_SUBDIRECTORY(main)
  3. 这里设置再次递归调用main与util中的CMakeLists.txt

main目录中添加CMakeLists.txt如下:

[cpp] view plain copy

  1. SET(EXECUTABLE_OUTPUT_PATH ${HELLO_SOURCE_DIR}/bin)
  2. SET(SRC_LIST main.cpp)
  3. INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/include)
  4. LINK_DIRECTORIES(${HELLO_SOURCE_DIR}/lib)
  5. ADD_EXECUTABLE(hello ${SRC_LIST})
  6. TARGET_LINK_LIBRARIES(hello util)

这里的主要是是用来定义可执行程序编译和链接时所需要的一些命令或环境。
INCLUDE_DIRECTORIES命令是定义工程的include文件夹,其中存放使用到的库的头文件,LINK_DIRECTORIES是
定义工程的库文件,其中存放着库文件,ADD_EXECUTABLE是定义生成的可执行文件,TARGET_LINK_LIBRARIES用
以定义链接时需要的库文件。

util目录中添加CMakeLists.txt如下:

[cpp] view plain copy

  1. SET(LIBRARY_OUTPUT_PATH ${HELLO_SOURCE_DIR}/lib)
  2. SET(CMAKE_C_COMPILER g++)
  3. SET(SRC_LIST hello.cpp)
  4. INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/include)
  5. ADD_LIBRARY(util STATIC ${SRC_LIST})

其中SET(LIBRARY_OUTPUT_PATH ${HELLO_SOURCE_DIR}/lib)定义了库生成的路径,LIBRARY_OUTPUT_PATH是一个内部变量,
存放库生成路径。SET(SRC_LIST hello.c)是用来定义库文件需要的源文件。ADD_LIBRARY(util STATIC ${SRC_LIST})是
用来定义生成的库的名字,以及生成库的类型和生成库需要的源文件。SET(CMAKE_C_COMPILER g++)是用来定义c的编译器
为g++,防止出现C和C++代码在不指定C编译器的情况下默认使用gcc,导致系统编译混乱
配置完成后目录结构如下:

4.编译运行
cd debug
cmake -G "MinGW Makefiles" ..\

make

..\bin\hello.exe

5.安装

在工程目录下添加COPYRIGHT、README、和run.bat,创建doc文件夹,在doc中新建hellot.txt

在顶级工程目录hello的CMakeLists.txt中添加如下命令:

[cpp] view plain copy

  1. INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake_demo)
  2. INSTALL(PROGRAMS run.bat DESTINATION  bin)
  3. INSTALL(PROGRAMS bin/hello.exe DESTINATION  bin)
  4. INSTALL(DIRECTORY doc/  DESTINATION share/doc/cmake_demo

这些命令表示在执行make install命令时,安装程序会拷贝相应的文件、目录或程序到指定的前缀开始的目录中

重新构建cmake

cmake -G "MinGW Makefiles"  -DCMAKE_INSTALL_PREFIX=c:\cmakedemo  ..#指定前缀c:\cmakedemo构建
make install#安装工程

tree /F c:\cmakedemo#查看安装目录

http://blog.csdn.net/xiaopangzi313/article/details/53117923

http://blog.csdn.net/xiaopangzi313/article/details/53115702

时间: 2024-10-26 08:12:27

windows下使用cmake+mingw配置makefile的相关文章

Windows下用cmake编译Caffe

Windows下用cmake编译Caffe 2018年8月24日 23:35:41 by ChrisZZ 环境说明 系统: Windows10 编译器:Visual Studio 2015 构建器:CMake 3.12 Caffe: BVLC官方Caffe的windows分支 CUDA: 9.2 CuDNN:7.0 终端: cmd窗口 具体步骤 1. 下载代码 进cmd敲: d: cd work git clone https://github.com/BVLC/caffe caffe-BVLC

Windows下安装Resin及配置详解与发布应用

关于Resin的好处,网上介绍了一大堆,小编经不住诱惑,决定试用一下.目前Resin的最新版本为:4.0.40,可以从官网直接下载. 1. 将下载下来的Resin包解压开,会看到一大堆的文件,有一些关键的文件,我们需要了解一下. resin-4.0.40 resin安装目录   --conf/resin.properties 配置属性   --conf/resin.xml 配置文件   --conf/licenses/ 许可信息文件   --conf/keys/ openSSL 秘钥   --w

windows下的*.url文件配置

直接指向网页 [InternetShortcut] URL=http://user.qzone.qq.com/2275471603 Modified=F00F43B3A875C601D9 ShowCommand=7 IconIndex=1 IconFile=C:\WINDOWS\SYSTEM\url.dll HotKey=1601 windows下的*.url文件配置,布布扣,bubuko.com

windows下spark开发环境配置

http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. 特注:windows下开发spark不需要在本地安装hadoop,但是需要winutils.exe.hadoop.dll等文件,前提是你已经安装了eclipse.maven.jdk等软件 spark支持jdk版本建议是1.8及以上,如果开发spark建议将jdk编译版本设置为1.8 我选择的spark是spark-1.4.0

Nginx + Tomcat Windows下的负载均衡配置

一.为什么需要对Tomcat服务器做负载均衡?    Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果超过500的并发数会出现Tomcat不能响应新的请求的情况,严重影响网站的运行.同时如果访问量非常大的情况下,Tomcat的线程数会不断增加.因此会占据大量内存,严重时出现内存溢出的现象,这时需要重启Tomcat以释放内存,阻断了网站的运行.    所以对Tomcat做负载均衡便很有必要.目前可以和Tomcat做负载均衡的主流服务器是Apache,但是Nginx由于功能

[傻瓜版] Redis在Windows下的开发环境配置步骤

redis默认运行在unix体系下,windows无法直接运行官方版.以下是几种解决方案, 一)Windows移植版.启动速度飞快,优先推荐使用. a) 2.6.12 是稳定版,我用来64位版做开发环境,数个月未发现重要问题.  下载地址: https://github.com/MSOpenTech/redis/tree/2.6/bin/release b) 2.8.4 是3月24发布的最新版,此版本运行时会临时占用内存大小的硬盘空间,下载地址: https://github.com/MSOpe

Windows下Android开发环境配置

最近在配置安卓. 还是拿舍友没带回家的手机.. 自己手机是WP.. 搞了半天搞好了. 叹了口气,要是有人这样教我就好了,少走好多弯路. 废话不说,步骤如下" 一.安装JDK 为啥要安装JDK就不说了吧?java写安卓.. 传送门: http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装完后,配置环境变量: 右击 "我的电脑"->属性->高级->环境变量->系统变量-&g

windows下手动安装和配置xamarin

安装xamarin xamarin官方给出了两种安装方式,自动安装和手动安装. 自动安装比较简单,到http://xamarin.com/download下载xamarininstaller.exe 运行后它会自动下载所需组件.过程还是比较简单的,下面重点说明一下手动安装和配置xamarin. 由于我的系统(win8.1 64位)在运行xamarininstaller.exe时老是报错,给xamarin的支持组发了个邮件,他们回复说还是手动安装吧,并把各个组件的下载链接发了过来.这段时间在网上查

【Objective-C】Windows下Objective-C开发环境配置

[Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/ 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言).由于苹果的自我封闭的产业链发展模式(从芯片.机器.开发语言.终端产品.服务)的限制,要想开发针对苹果 iPhone等产品的应用程序,就需要用Mac机器,在Xcode