c++程序怎么运行出来
c++基础00,让程序运行起来需要经过编译链接,最后才是可以运行的可执行文件
1绪论
无论是新手,还是老手,让程序跑起来都是一件令人开心的事情对于c/c++的程序而言,有时候让程序运行起来并不是很容易的事情
c/c++的程序在编写完成之后,需要经过编译链接,最后才是可以运行的可执行文件如果是仅仅依赖标准库的单个源文件,运行程序还是比较简单的但是,如何涉及多个源文件,涉及第三方库,动态链接库,如何让主程序运行起来是比较头疼的;这在工程项目中又是普遍存在的
2不同的运行方式
2.1单个c++源文件,而且不涉及第三方库
Windows下面推荐使用IDE devcpp,可以对单个文件进行编译运行,集成了编辑器编译器链接器和运行调试,对单个CPP文件也不用建立工程项目Ubuntu直接g++main.cpp-o main;main就行对于写算法题,测试某个函数,都是比较方便的
2.2项目工程文件
一般一个项目涉及多个CPP源文件,还很有可能会用到多个第三方库,比如图像处理的OpenCV,日志记录的spdlog,通用型库boost,网络库asio,点云处理库PCL对于第三方库,c++的包管理一直不太好,令人烦躁的一件事情自己去对应库的官网下载(编译链接)安装添加环境变量,虽然说锻炼人,可以学到东西
但是,我还是更喜欢python的pip/conda,这种方式太香了啊有些东西对于老手而言,只觉得枯燥;对于新人而言,这是什么东西ORZ(太劝退了)曾经结合visual studio的版本,安装PCL来处理点云,过程还是很折磨的而且,身为现代的高级语言,没有好用的包管理器,这本身就是一件比较诡异的事情,会被鄙视的
这里推荐一些包管理工具,类似于python的pip/conda,用于windows的vcpkg(VC+pkg,显然是微软家的),conan(柯南,不是推理的侦探柯南,是包管理器的柯南),xrepo(集成了vcpkg,conan,conda.我更推荐这个,而且跨平台)
这个时候,可以采取以下三种方案,个人推荐第三种:
(1)windows下,可以使用号称宇宙第一IDE的visual studio 20xx
优点不多说了,我特别喜欢它的调试功能,强无敌主要是我不太喜欢的地方:编辑器,我更喜欢vs code,纯属个人习惯哈;需要在项目属性上配置第三方库,比如安装好第三方库之后,添加环境变量,然后在visual studio的项目属性里面添加包含目录库目录第三方依赖项,并设定好平台
(2)跨平台的方案-vs code+cmake
cmake很强,只要用大半天的时间熟悉一下CMakeLists.txt的写法在安装好第三方库之后,写CMake语句就好
(3)懒人的方案
我是比较懒的,虽然我懂CMake语法,看得懂,也会写CMakeLists.txt,但是Cmake确实比较繁琐,而且我还得额外安装第三方库当然了,Cmake的基本语法和用法还是要会的,虽然不一定写
xmake集成了包管理编译链接运行和调试,还是很方便和强大的具体的安装和样例在主页上就可以看到,中文支持也比较好下面主要是常见的用法个人推荐的编译器是clang(/clang++),相比于gcc(g++),编译速度快,具体的比较见这里:Clang与GCC的区别-简书(jianshu.com)注意clang只是编译器,因此我是先安装了gcc,g++,再安装了clangclang编译出问题,可以换回默认的,比如在用sdplog日志库的时候,clang似乎有问题
3xmake的常见用法
(1)创建项目的命令:
在vs code的Terminal下,输入xmake create Project_Name,就会创建叫做Project_Name的项目文件夹
输入xmake create test,回车之后:自动生成test项目,包含src文件夹,和一个xmake.lua的文件它是使用了lua语法,但是特别简单,感觉和自然语言没差别
默认生成的xmake.lua里面的代码第一行add_rules是添加了项目是debug版还是release版,然后,target()括号里是要生成的可执行文件名称,这里是test,set_kind(),设定输出类型是二进制文件,add_files(),添加源文件目录set_kind():binary二进制程序,static静态库程序,shared动态库程序
(2)编译链接
cd进项目根目录,这里是test/在Terminal下输入xmake,会在test/目录下自动添加build目录,里面有可执行文件
(3)运行
输入xmake r,回车,就可以看到程序运行结果
(4)设定编译器和c++标准
这里是采用clang,clang++,标准是c++20
(5)下载和使用第三方库
下载第三方库:xrepo install xxxlib,下载的库会存在当前用户目录下的.xmake里面的packages在windows下是系统盘的用户名下面的AppData目录里.xmake目录下的packages
使用第三方库:比如opencv的例子如下:在xmake.lua里面添加add_requires("opencv")add_packages("opencv")即可
(6)更改库的默认保存路径
更改存储包的目录命令如下,注意替换为自己的目录:我可不想C盘的AppData巨大无比,曾经的噩梦是它几十G!
(7)删除包
(8)install时采用GitHub镜像加速
GitHub时常上不去,安装包时可以设置镜像加速,命令如下github镜像加速,效果明显
(9)生成visual studio solution
执行:xmake project-k vsxmake-m"debug;release即可
(10)生成CMakeLists.txt
执行$xmake project-k cmakelists即可
(11)添加编译指令-pthread
在target()命令前面加上一行:add_ldflags("-pthread")--需要在编译指令中添加-pthread
(随机推荐阅读本站500篇优秀文章点击前往:500篇优秀随机文章)