cmake在Windows上的使用
2016-05-01 08:04
411 查看
cmake介绍
cmake是一个构建C++代码的跨平台工具,他能够干什么呢?他能够搜索你的平台环境,然后生成平台上用于Build的文件。在Windows上安装了Visual Studio, 他能够帮你生成.sln, .vcxproj文件。如果在Linux上,能够帮你生成makefile。在MAC OS上,帮你生成xcode的项目文件。利用这些文件你就可以在本地编译,链接文件。生成这些项目,solution文件的输入信息,就是一套自己编写的和平台无关的配置文件。一般使用CMakeLists.txt文件。cmake在Windows上的安装
https://cmake.org/download/ 上下载Windows安装包,安装就可以了。cmake的简单实用
编写C++文件
首先需要一个简单的Hello World程序。HelloWorld.cpp
#include <iostream> using namespace std; int main() { cout<<"Hello World"<<endl; return 0; }
然后需要一个CMakeLists.txt
在cpp文件相同的目录下(项目cpp源文件根目录)建立一个CMakeLists.txt文件。cmake_minimum_required (VERSION 2.6) project (HelloWorld) add_executable (HelloWorld HelloWorld.cpp)
运行cmake
到CMakeLists.txt文件所在目录,运行cmake。cmake .
输出
D:\HelloWorld>cmake . -- Building for: Visual Studio 14 2015 -- The C compiler identification is MSVC 19.0.23506.0 -- The CXX compiler identification is MSVC 19.0.23506.0 -- Check for working C compiler using: Visual Studio 14 2015 -- Check for working C compiler using: Visual Studio 14 2015 -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler using: Visual Studio 14 2015 -- Check for working CXX compiler using: Visual Studio 14 2015 -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: D:/HelloWorld
生成的.sln, .vcxproj文件
ID | 文件名 |
---|---|
1 | HelloWorld.sln |
2 | ALL_BUILD.vcxproj |
3 | HelloWorld.vcxproj |
4 | ZERO_CHECK.vcproj |
构建程序
msbuild HelloWorld.sln
然后就可以在Debug目录下面找到HelloWorld.exe程序。
总结
cmake给跨平台的C++程序提供了很好的构建解决方案。适合需要跨平台项目的使用。功能不多,简单,但还是比较实用的。建议阅读https://cmake.org/cmake-tutorial/ 。基本功能在tutorial里面都有介绍。相关文章推荐
- Scala的类的私有属性和对象的私有字段
- C#OOP之十四 .Net Framework简介
- C#OOP之十四 .Net Framework简介
- C#OOP之十四 .Net Framework简介
- 为了Cisco UC,36年来家中第一次安装固话
- 为了Cisco UC,36年来家中第一次安装固话
- ESP8266使用详解
- UIIMage与CGImage的关系
- Tab Bar Item
- NSUserDefaults
- js中的继承2--原型继承
- 属性声明方式@interface与@property 的不同
- 写在前面
- PCB上铺地打过孔的原则
- Pinyin Comparison 拼音辨别 V1.2
- js中的继承1--类继承
- spark源码阅读笔记RDD(四)RDD中WithScope是什么?
- 【Scala一】Scala各种符号的含义
- 一招足矣:一个软文贴是如何轻松吸引百万流量的!
- Synchronizing threads in Android/Java