VS2019进行Linux项目开发和调试

对于经常做项目的人来说,一个项目经常会有多个依赖库和一个可执行文件,下面介绍如何利用VS2019来进行Linux项目开发

此处以我自己写的日志分级打印为例,先生成一个名为liblog.so的动态库,然后对这个动态库进行使用

一、项目目录结构

VS2019进行Linux项目开发和调试

log为我的工程名,include用来存放头文件,project下的vs用来放工程,src为日志级别实现源码,test为试验代码

二、生成动态库(.so)

(1)创建一个空项目,并将存储位置设置为project下的vs

VS2019进行Linux项目开发和调试

(2)设置项目名称为“log”,位置project目录下的vs,这个时候一般会默认创建一个叫log的文件夹来存放新的工程,我一般都是把项目拷贝到vs目录下,然后将新建的文件夹删除

VS2019进行Linux项目开发和调试

(3)打开工程,然后右键,选择“新建筛选器”(新建文件夹)

VS2019进行Linux项目开发和调试

(4)选中“include”,右键添加新文件,然后头文件位置选择之前建好的include文件夹,点击添加

VS2019进行Linux项目开发和调试

(5)同理在src中添加一个名为log.c的文件

VS2019进行Linux项目开发和调试

(6)项目属性配置

此处根据linux服务器来确定32位还是64位,arm的我没碰到过呢,有兴趣的可以自己试一下

VS2019进行Linux项目开发和调试

最上方配置栏选择“所有配置”,平台选择“所有平台”

输出目录配置:$(ProjectDir)..\..\lib\$(Platform)\$(Configuration)\

中间目录配置:$(ProjectDir)obj\$(ProjectName)\$(Platform)\$(Configuration)\

远程生成计算机选择自己Linux服务器即可

远程项目目录:$(RemoteRootDir)/projects/$(SolutionName)

配置类型:动态库(.so)

点击“应用”按钮,效果如下图

VS2019进行Linux项目开发和调试

(7)头文件依赖目录设置

附加包含目录:$(ProjectDir)..\..\include

VS2019进行Linux项目开发和调试

(8)依赖动态库设置

线程库的引用,相当于gcc编译的-lpthread,此处不要加-l

VS2019进行Linux项目开发和调试

(9)项目编译,此时目录结构如下,至此liblog.so动态库就生成了

VS2019进行Linux项目开发和调试VS2019进行Linux项目开发和调试

三、使用动态库(.so)

1.新建一个log_test工程,跟log工程放在同一目录下(也可不在同一目录下),建好后效果如下

VS2019进行Linux项目开发和调试VS2019进行Linux项目开发和调试

2.设置项目依赖项

在“解决方案”处,右键选择“属性”,然后选择项目依赖项,因为log_test使用log生成的liblog.so动态库,所以log_test依赖于log

VS2019进行Linux项目开发和调试设置完成确定

3.log_test项目属性设置,注意此处输出目录为$(ProjectDir)..\..\lib\$(Platform)\$(Configuration)\,配置类型为应用程序(.out)

本地习惯用lib存放动态库,bin用来存放二进制文件,具体命名可根据个人喜好来

VS2019进行Linux项目开发和调试

4.头文件路径设置跟上面一样

5.动态库路径和引用设置

此时引用liblog.so和pthread两个库,pthread为系统库,引用时不需要设置路径,liblog.so为自己写的库,需要设置路径

liblog.so库路径为$(ProjectDir)..\..\lib\$(Platform)\$(Configuration)(如果log_test和log在同一目录下,则liblog.so路径跟上述输出设置一样)

对于形如lib**.so这种,只需要写**就可以

VS2019进行Linux项目开发和调试

VS2019进行Linux项目开发和调试

6.此时已经能编译通过了,注意“重新生成解决方案”会报头文件找不到错误,这个是VS2019的bug,如果需要重新编译的话建议先清理再编译,不要使用“重新生成解决方案”

7.调试设置

如果能够直接在windows上调试linux代码,那效率将大大提升,接下来我会详细说明如何配置调试环境

(1)设置远程生成后事件,将生成的动态库拷贝到二进制文件所在目录

拷贝命令cp -f $(RemoteProjectDir)/lib/$(Platform)/$(Configuration)/liblog.so $(RemoteProjectDir)/bin/$(Platform)/$(Configuration)/,如果有多个则需要进行多次拷贝,中间用分号(;)隔开

VS2019进行Linux项目开发和调试

(2)在启动项目工程处右键选择属性,我这个工程中log_test为启动项目,所以对log_test进行属性设置

因为debug是用来调试,所以此时配置选项应改为“Debug”

VS2019进行Linux项目开发和调试

(3)调试程序:/root/projects/$(SolutionName)/bin/$(Platform)/$(Configuration)/$(TargetName).out

         工作目录:/root/projects/$(SolutionName)/bin/$(Platform)/$(Configuration)/

         程序参数:如果有的话就填,如命令行输入test

         其它程序调试命令:set env LD_LIBRARY_PATH /root/projects/$(SolutionName)/bin/$(Platform)/$(Configuration)/

       VS2019进行Linux项目开发和调试

(4)按F5即可启动调试,test为命令行输出

VS2019进行Linux项目开发和调试

至此,VS2019进行Linux下动态库生成、使用及调试介绍完毕!