windows下使用cmake+mingw配置makefile(二)
来源:互联网 发布:java数据输入方法 编辑:程序博客网 时间:2024/05/07 10:20
前面一节说了cmake简易使用,但是实际开发中项目文件非常多,使用哪种简易方式会导致代码十分混乱,因此本文介绍一种cmake管理大型项目的demo流程。
具体步骤如下:
1.创建相关的项目目录
cmd mkdir hellocd hellomkdir inlude lib src debug其中inlucde用来存放头文件,lib用来存放库文件,src用来存放源程序,debug用来作调试,类似于qt等IDE环境的配置
cd srcmkdir main util其中main用来存放主程序(这里以main.cpp为例),util用来存放相关的库源程序(这里以hello.cpp为例)
2.创建相关的源文件
在include中添加项目相关的头文件(这里以hello.h为例):
hello.h#ifndef _HELLO_H_#define _HELLO_H_extern int hello();#endif在main中添加主程序main.cpp如下:
#include <iostream>#include "hello.h"int main(){hello(); return 0;}在util中添加hello.cpp如下:
#include <iostream>using namespace std;int hello(){cout << "hello word cmake!!!" << endl; return 0;}3.创建相关的配置文件CMakeLists.txt:
在顶级目录hello中添加CMakeLists.txt如下:
<pre name="code" class="cpp">PROJECT(HELLO)#设置工程名ADD_SUBDIRECTORY(src)CMAKE_MINIMUM_REQUIRED(VERSION 3.7)#设置版本号MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})这里定义了子目录src,用以递归的调用src中的CMakeLists.txt
src目录中添加CMakeLists.txt如下:
ADD_SUBDIRECTORY(util)ADD_SUBDIRECTORY(main)这里设置再次递归调用main与util中的CMakeLists.txtmain目录中添加CMakeLists.txt如下:
SET(EXECUTABLE_OUTPUT_PATH ${HELLO_SOURCE_DIR}/bin)SET(SRC_LIST main.cpp)INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/include)LINK_DIRECTORIES(${HELLO_SOURCE_DIR}/lib)ADD_EXECUTABLE(hello ${SRC_LIST})TARGET_LINK_LIBRARIES(hello util)这里的主要是是用来定义可执行程序编译和链接时所需要的一些命令或环境。
INCLUDE_DIRECTORIES命令是定义工程的include文件夹,其中存放使用到的库的头文件,LINK_DIRECTORIES是
定义工程的库文件,其中存放着库文件,ADD_EXECUTABLE是定义生成的可执行文件,TARGET_LINK_LIBRARIES用
以定义链接时需要的库文件。
util目录中添加CMakeLists.txt如下:
SET(LIBRARY_OUTPUT_PATH ${HELLO_SOURCE_DIR}/lib)SET(CMAKE_C_COMPILER g++)SET(SRC_LIST hello.cpp)INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/include)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中添加如下命令:
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake_demo)INSTALL(PROGRAMS run.bat DESTINATION bin)INSTALL(PROGRAMS bin/hello.exe DESTINATION bin)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#查看安装目录
1 0
- windows下使用cmake+mingw配置makefile(二)
- windows下使用cmake+mingw配置makefile(一)
- Windows下使用CMake+MinGW静态编译发布.exe程序
- windows下cmake配合VS和mingw
- mingw makefile在windows下的书写
- windows cmake mingw生成
- 在Windows下使用CMake+MinGW搭建C/C++编译环境
- Windows下使用CMake
- windows下使用cmake
- windows 下使用makefile(二)---- 编译
- mingw+msys windows下配置
- CMake + MinGW + OpenCV + CodeBlocks Windows下环境搭建
- Windows下配置cygwin/cmake
- Windows下基于CMake的FFTW库配置和使用
- PCL 在windows 下的配置(使用Cmake)
- PCL 在windows 下的配置(使用Cmake)
- windows下cmake的使用
- Windows下CMake的使用
- 线程池
- Sqlserver定时执行存储过程
- 协方差矩阵
- POJ 3126Prime Path(BFS)
- GC判断可回收对象算法
- windows下使用cmake+mingw配置makefile(二)
- selectpicker clone的问题
- Hadoop reduce阶段遍历Iterable的问题及解决方案
- win版的QuitTime 视频格式转换
- Java Web系列:Java Web 项目基础
- Hive 之 导入导出数据
- 微信扫码支付(模式1)订单查询php详解:
- (1)安装win7+ubuntu14.04双系统
- opencv处理不规则多边形ROI 之二