【C++】cmake初次编译-HelloWorld
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【C++】cmake初次编译-HelloWorld,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5785字,纯文字阅读大概需要9分钟。
内容图文
![【C++】cmake初次编译-HelloWorld](/upload/InfoBanner/zyjiaocheng/628/c402d8920a70430e82e00bd255378004.jpg)
转自:
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。
E:\ReSimStudio\cmakedemo>cmake .
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/ReSimStudio/cmakedemo
E:\ReSimStudio\cmakedemo>msbuild ALL_BUILD.vcxproj
Microsoft (R) 生成引擎版本 14.0.25420.1
版权所有(C) Microsoft Corporation。保留所有权利。
生成启动时间为 2020/7/2 10:16:26。
节点 1 上的项目“E:\ReSimStudio\cmakedemo\ALL_BUILD.vcxproj”(默认目标)。
项目“E:\ReSimStudio\cmakedemo\ALL_BUILD.vcxproj”(1)正在节点 1 上生成“E:\ReSimStudio\cmakedemo\ZERO_CHECK.vcxpro
j”(2) (默认目标
)。
PrepareForBuild:
正在创建目录“Win32\Debug\ZERO_CHECK\”。
正在创建目录“E:\ReSimStudio\cmakedemo\Debug\”。
正在创建目录“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\”。
InitializeBuildStatus:
正在创建“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
Checking Build System
FinalizeBuildStatus:
正在删除文件“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”。
正在对“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:\ReSimStudio\cmakedemo\ZERO_CHECK.vcxproj”(默认目标)的操作。
项目“E:\ReSimStudio\cmakedemo\ALL_BUILD.vcxproj”(1)正在节点 1 上生成“E:\ReSimStudio\cmakedemo\HelloWorld.vcxpro
j”(3) (默认目标
)。
PrepareForBuild:
正在创建目录“HelloWorld.dir\Debug\”。
正在创建目录“HelloWorld.dir\Debug\HelloWorld.tlog\”。
InitializeBuildStatus:
正在创建“HelloWorld.dir\Debug\HelloWorld.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
Building Custom Rule E:/ReSimStudio/cmakedemo/CMakeLists.txt
ClCompile:
D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi /nologo /W1 /WX- /Od /Ob0 /Oy- /D WIN3
2 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forSco
pe /Zc:inline /GR /Fo"HelloWorld.dir\Debug\\" /Fd"HelloWorld.dir\Debug\vc140.pdb" /Gd /TP /analyze- /errorRepor
t:queue E:\ReSimStudio\cmakedemo\HelloWorld.cpp
HelloWorld.cpp
Link:
D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"E:\ReSimStudio\cma
kedemo\Debug\HelloWorld.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ol
e32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='fal
se'" /manifest:embed /DEBUG /PDB:"E:/ReSimStudio/cmakedemo/Debug/HelloWorld.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /D
YNAMICBASE /NXCOMPAT /IMPLIB:"E:/ReSimStudio/cmakedemo/Debug/HelloWorld.lib" /MACHINE:X86 /SAFESEH /machine:X8
6 HelloWorld.dir\Debug\HelloWorld.obj
HelloWorld.vcxproj -> E:\ReSimStudio\cmakedemo\Debug\HelloWorld.exe
HelloWorld.vcxproj -> E:/ReSimStudio/cmakedemo/Debug/HelloWorld.pdb (Full PDB)
FinalizeBuildStatus:
正在删除文件“HelloWorld.dir\Debug\HelloWorld.tlog\unsuccessfulbuild”。
正在对“HelloWorld.dir\Debug\HelloWorld.tlog\HelloWorld.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:\ReSimStudio\cmakedemo\HelloWorld.vcxproj”(默认目标)的操作。
PrepareForBuild:
正在创建目录“Win32\Debug\ALL_BUILD\”。
正在创建目录“Win32\Debug\ALL_BUILD\ALL_BUILD.tlog\”。
InitializeBuildStatus:
正在创建“Win32\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
Building Custom Rule E:/ReSimStudio/cmakedemo/CMakeLists.txt
FinalizeBuildStatus:
正在删除文件“Win32\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild”。
正在对“Win32\Debug\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:\ReSimStudio\cmakedemo\ALL_BUILD.vcxproj”(默认目标)的操作。
已成功生成。
0 个警告
0 个错误
已用时间 00:00:01.52
E:\ReSimStudio\cmakedemo>cd debug
E:\ReSimStudio\cmakedemo\Debug>ls
'ls' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
E:\ReSimStudio\cmakedemo\Debug>HelloWorld.exe
Hello World
E:\ReSimStudio\cmakedemo\Debug>
总结
cmake给跨平台的C++程序提供了很好的构建解决方案。适合需要跨平台项目的使用。功能不多,简单,但还是比较实用的。建议阅读https://cmake.org/cmake-tutorial/ 。基本功能在tutorial里面都有介绍。
————————————————
版权声明:本文为CSDN博主「zhangyiant」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangyiant/article/details/51289404
内容总结
以上是互联网集市为您收集整理的【C++】cmake初次编译-HelloWorld全部内容,希望文章能够帮你解决【C++】cmake初次编译-HelloWorld所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。