cmake安装与使⽤
CMake(cross platform make)是⼀个开源的跨平台⼯具系列,旨在构建,测试和打包软件。
使⽤指定名为的配置⽂件可以控制软件的构建、测试和打包等流程。
通过编写平台⽆关的⽂件和需要简单的配置,CMake就能⽣成对应⽬标平台的构建⽂件
1.安装
(1)Linux
所有主流的Linux发⾏版的源中都包含有cmake的安装包,直接从源中添加即可
(2)windows
选择 cmake-3.15.0-rc3-win64-x64.zip
解压
设置环境变量 path,eg:E:\baby\software\cmake-3.15.0-rc3-win64-x64\bin
测试,win+R,cmd,执⾏命令 cmake --version
准备:
安装的是VS2015
设置VS2015的环境变量,以便cmake能到编译器(设置⽅法)
准备需要的⽂件和⽬录
⽬录 E:\C\cmake
HelloWorld.cpp
#include <iostream>
using namespace std;
int main() {
cout<<"HelloWorld"<<endl;
system("pause");
return0;
}
cmake_minimum_required (VERSION 2.6)
project (HelloWorld)
add_executable (HelloWorld HelloWorld.cpp)
说明:
第1⾏,cmake需要的最低版本
第2⾏,创建了⼀个名为 HelloWorld ⼯程,对应⽣成⼀个 HelloWorld.sln 。project函数表⽰创建⼀个⼯程 第3⾏,添加⼀个名为 HelloWorld 的可执⾏程序项⽬,它的源代码为 HelloWorld.cpp
add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
(1)cmake命令
A.⽣成编译⼯程⽂件
cmake [<options>] (<path-to-source> | <path-to-existing-build>)
打开cmd,进⼊E:\C\cmake⽬录,运⾏命令
cmake .
输出
-- Building for: Visual Studio 142015
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi o 14.0/VC/
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi o 14.0/VC/ -- 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
⽣成⽂件
B.编译⼯程
cmake --build <dir> [<options>] [-- <build-tool-options>...]
debug模式(默认)
cmake --build .
输出
Microsoft (R) ⽣成引擎版本14.0.25420.1
版权所有(C) Microsoft Corporation。保留所有权利。
Checking Build System
Building Custom Rule E:/C/
HelloWorld.cpp
HelloWorld.vcxproj -> E:\C\cmake\
HelloWorld.vcxproj -> E:/C/cmake/Debug/HelloWorld.pdb (Full PDB)
Building Custom Rule E:/C/
Release模式
cmake --build . -- /p:Configuration=Release
输出
Microsoft (R) ⽣成引擎版本14.0.25420.1
版权所有(C) Microsoft Corporation。保留所有权利。
Checking Build System
Building Custom Rule E:/C/
HelloWorld.cpp
HelloWorld.vcxproj -> E:\C\cmake\
Building Custom Rule E:/C/
进⼊到带有exe的⽬录,执⾏
(2)cmake-gui使⽤
删掉上⼀步⽣成的⽂件和⽬录,保留下⾯的
A .打开cmake-gui程序,配置⽬录
B.点Configure开始执⾏配置
配置完成后,build⽬录为
C.点击 Generate,开始⽣成 VS 项⽬
D.编译
d1)打开VS
点击cmake-gui中下放的 Open Project 按钮或者直接双击 build ⽬录下的 HelloWorld.sln,即可在VS中打开⼯程
cmake⽣的HelloWorld⼯程共有3个项⽬
说明:
ALL_BUILD
该⽬标会导致⼯程中所有项⽬被构建,类似 Visual Studio 的 Build All 或者 make 的 make all命令
HelloWorld
项⽬本⾝,就是在⽂件中配置的project(HelloWorld)
ZERO_CHECK
该项⽬会检查⽣成⼯程的 CMake 配置⽂件( )是否更新。
如更新,将运⾏ CMake 重新⽣成⼯程⽂件。
如果确信 不会被更新,或者希望⼿⼯运⾏ CMake 重新⽣成⼯程⽂件,可以在 配置⽂件
中添加 set(CMAKE_SUPPRESS_REGENERATION FALSE) 命令, ZERO_CHECK ⽬标将不会⽣成单独⽣成项⽬HelloWorld,在build下的相应⽬录看到可执⾏⽂件已经⽣成。
为什么现在都用cmake 双击后,可以看到程序输出
d2)打开VS命令⾏
在开始菜单,打开VS2015 x86 本机⼯具命令提⽰符
进⼊到build⽬录下,执⾏ msbuild HelloWorld.sln,输出
Microsoft (R) ⽣成引擎版本14.0.25420.1
版权所有(C) Microsoft Corporation。保留所有权利。
在此解决⽅案中⼀次⽣成⼀个项⽬。若要启⽤并⾏⽣成,请添加“/m”开关。
⽣成启动时间为2019/7/913:03:53。
节点1上的项⽬“E:\C\cmake\build\HelloWorld.sln”(默认⽬标)。
ValidateSolutionConfiguration:
正在⽣成解决⽅案配置“Debug|Win32”。
ValidateProjects:
在解决⽅案配置“Debug|Win32”中未选定⽣成项⽬“ALL_BUILD”。
项⽬“E:\C\cmake\build\HelloWorld.sln”(1)正在节点1上⽣成“E:\C\cmake\build\He
lloWorld.vc
项⽬“E:\C\cmake\build\aproj”(2)正在节点1上⽣成“E:\C\c
make\build\
ZERO_CHECK.vcxproj”(3) (默认⽬标)。
PrepareForBuild:
正在创建⽬录“E:\C\cmake\build\Debug\”。
InitializeBuildStatus:
正在创建“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”,因为已指
定“AlwaysCr
eate”。
CustomBuild:
所有输出均为最新。
FinalizeBuildStatus:
正在删除⽂件“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”。
正在对“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate”执⾏
Touch
任务。
已完成⽣成项⽬“E:\C\cmake\build\ZERO_CHECK.vcxproj”(默认⽬标)的操作。
项⽬“E:\C\cmake\build\aproj”(2)正在节点1上⽣成“E:\C\c
make\build\
HelloWorld.vcxproj”(4) (默认⽬标)。
PrepareForBuild:
正在创建⽬录“HelloWorld.dir\Debug\”。
正在创建⽬录“HelloWorld.dir\Debug\HelloWorld.tlog\”。
InitializeBuildStatus:
正在创建“HelloWorld.dir\Debug\HelloWorld.tlog\unsuccessfulbuild”,因为已指定
“AlwaysCrea
te”。
CustomBuild:
Building Custom Rule E:/C/
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ /c /Zi /nol
ogo /W1 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /
D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:in
line /GR /Fo"HelloWorld.dir\Debug\\" /Fd"HelloWorld.dir\Debug\vc140.pdb" /Gd
/
TP /analyze- /errorReport:queue E:\C\cmake\HelloWorld.cpp
HelloWorld.cpp
Link:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ /ERRORREP
ORT:QUEUE /OUT:"E:\C\cmake\build\" /INCREMENTAL /NOLOGO k
ernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.
lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvok
er' uiAccess='false'" /manifest:embed /DEBUG /PDB:"E:/C/cmake/build/Debug/Hel
loWorld.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"E:/C /cmake/build/Debug/HelloWorld.lib" /MACHINE:X86 /SAFESEH /machine:X86 HelloW
orld.dir\Debug\HelloWorld.obj
HelloWorld.vcxproj -> E:\C\cmake\build\
HelloWorld.vcxproj -> E:/C/cmake/build/Debug/HelloWorld.pdb (Full PDB) FinalizeBuildStatus:
正在删除⽂件“HelloWorld.dir\Debug\HelloWorld.tlog\unsuccessfulbuild”。
正在对“HelloWorld.dir\Debug\HelloWorld.tlog\HelloWorld.lastbuildstate”执⾏ T
ouch 任
务。
已完成⽣成项⽬“E:\C\cmake\build\HelloWorld.vcxproj”(默认⽬标)的操作。
已完成⽣成项⽬“E:\C\cmake\build\aproj”(默认⽬标)的操作。
已完成⽣成项⽬“E:\C\cmake\build\HelloWorld.sln”(默认⽬标)的操作。
已成功⽣成。
0个警告
0个错误
已⽤时间00:00:01.92
View Code
可以在Debug中看到⽣成的⽂件,双击可运⾏
(3)使⽤cmake命令与nmake⽣成器
删掉上⼀步⽣成的⽂件和⽬录,保留下⾯的
A.使⽤cmake命令⾏与nmake⽣成器构建Makefile
打开VS2015 x86 本机⼯具命令提⽰符
进⼊cmake⽬录,执⾏
cmake -G "NMake Makefiles" .
B.编译,执⾏命令 nmake
在cmake⽬录⽣成了程序
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论