精华内容
下载资源
问答
  • c++项目实战

    2018-01-05 16:18:09
    c++项目实战实现坦克大战期末课程设计实现可视化的坦克大战
  • C++ 项目实战 源码

    2013-03-26 10:47:27
    Visual C++典型模块与项目实战大全(源码03~15).zip
  • Visual C++典型模块与项目实战大全(源码16~18).zip
  • 利用vs2017 CMake开发跨平台C++项目实战

    万次阅读 多人点赞 2019-01-16 16:01:28
    对于windows程序员来说,在linux上开发C++程序会非常困难,一来没用过makefile,其语法非常生涩难懂,二来vs之外的IDE,其易用性与vs相差甚远,宇宙第一IDE不是盖的。致使C++不同于其他编程语言,硬生生催生出...

           对于windows程序员来说,在linux上开发C++程序会非常困难,一来没用过makefile,其语法非常生涩难懂,二来vs之外的IDE,其易用性与vs相差甚远,宇宙第一IDE不是盖的。致使C++不同于其他编程语言,硬生生催生出Windows程序员和Linux程序员两个群体,直到有了CMake。

           常用开源库的同学想必对CMake非常熟悉,它可以在Linux上可以自动生成makefile,在Windows下可以生成vs解决方案sln,对于大规模跨平台项目绝对是首选,只不过Linux程序员用的多。相对于makefile,CMake语法要简单的多,一周包教包会,走向人生巅峰。现在程序员的福音来了,visual studio在2017以后已经支持了CMake语法,使用vs2017可以在windows下写程序,在linux下编译,真的很方便。虽然现在的版本还不太成熟,偶尔会出现一些迷之错误,但相信以后这都不是事。真希望有一天,大家都用上vs2017。

           废话不多说,我以实战入手,从我的代码搬迁开始说起,我原先的代码是用vs2013开发的,第三方库头文件和库文件的管理都是通过vs属性页管理的,程序间互相依赖是通过引用完成的。如图所示:

    想必这些对windows程序员都非常熟悉,vs就是通过这样管理项目的。我下面逐步介绍一下我这个工程是如何搬迁到linux上运行的。

    一、建立工程目录

    如果你在装vs2017的时候勾选了cmake,点击新建->项目时会出现cmake选项,点击确定,建立一个工程文件夹。

    cmake会自动为我们创建如下文件,CMakeLists.txt就是管理当前文件夹下文件的配置文件,由于我一个文件夹里放一个工程,因此其地位相当于vs的vsproject,好像其不能改名,只能这么命名,不管它。子文件夹cmake_test是自动生成的,我并不打算将我的根目录叫这个名字,删除之:

    新建我的源代码文件根目录src,并向其添加CMakeLists.txt

    打开根目录的CMakeList.txt,其中可以写入对整个工程的配置:

    cmake_minimum_required用来设置cmake的最低版本,如果所使用低于最低版本会报错。project用来设置整个工程的名字,add_subdirectory用来对子目录进行管理,这里我们只有一个子目录src,将其加进来。cmake语法不区分大小写,这里为了与其他语法相区别,统一都用大写。set命令通常用来设置变量,CMake自身有许多预定义变量,可以通过set给它们赋值,如CMAKE_MOULE_PATH里面就指向了.cmake文件的搜索目录,这通常会被用在第三方库的搜索上面,它同时也有默认值,如CMAKE_SOURCE_DIR就是指向了根目录,这里就是将根目录下cmake文件夹作为第三方库搜索文件所在目录。

    二、加入源代码

    在子文件夹src中迁移源代码,按工程新建文件夹

    src文件夹下的CMakeList.txt用来对源代码文件夹进行管理,其cmake代码如下:

    很简单,把各自子项目的源代码文件夹加进来就可以了。将vs各工程内的.h、.cpp都复制到cmake子项目文件夹下,并在其内新建CMakeLists.txt

    其文件夹下的CMakeLists.txt是对本工程下源代码文件的管理

    PROJECT就是该工程的名字,FILE是文件操作命令,其作用是将所有cpp文件存入base_src变量内,GLOB选项将会为所有匹配查询表达式的文件生成一个文件list,并将该list存储进变量variable里,如果不指定GLOB,就要将所有cpp都列进来了,一般如果我们所有cpp都参与编译,就用GLOB都包含进来就可以了。ADD_LIBRARY的主要作用就是将指定的源文件生成链接文件,然后添加到工程中去,该指令常用的语法如下:

    add_library(<name> [STATIC | SHARED | MODULE]
                [EXCLUDE_FROM_ALL]
                [source1] [source2] [...])

    其中<name>表示库文件的名字,该库文件会根据命令里列出的源文件来创建。而STATIC、SHARED和MODULE的作用是指定生成的库文件的类型。STATIC库是目标文件的归档文件,在链接其它目标的时候使用。SHARED库会被动态链接(动态链接库),在运行时会被加载。MODULE库是一种不会被链接到其它目标中的插件,但是可能会在运行时使用dlopen-系列的函数。默认状态下,库文件将会在于源文件目录树的构建目录树的位置被创建,该命令也会在这里被调用。
    ADD_LIBRARY (${PROJECT_NAME} SHARED ${base_src})

    这里的${PROJECT_NAME}就是工程名,也就是Base,这里$通常用来引用变量,这个语法倒是和vs一样。base_src就是刚才的源文件列表,由于我的工程都是动态链接库,因此,这里用了SHARED。

    INCLUDE_DIRECTORIES用来设置头文件的搜索目录,也就是跟vs中的VC++目录一样的功能,几乎每个工程都有这么一句。

    值得注意的是,通常我们在windows设置动态链接库的时候,都要设置类或函数的导出符号,而Liunx不需要这么做,通常我们可以用宏进行控制,在vs工程中,默认会定义预编译宏_WINDOWS,通常拿这个就可以控制windows平台和Linux了。

    CMakeLists.txt中ADD_DEFINITIONS(-DBASE_EXPORTS)就是为了在windows平台下设置BASE_EXPORTS这个宏,使其导出符号而设置的。

    三、第三方库设置

    我们在做项目的时候通常都会用到很多开源库,vs的通用做法是将其写到工程文件中,cmake也一样,也会写到CMakeLists.txt文件中,它还有更强大的搜索功能,可以不必指定第三方库的绝对路径。正好我的工程Log里就用到了第三方库Log4cpp,我将演示如何设置它。在Log子项目文件夹下新增CMakeLists.txt,其内容有:

    TARGET_LINK_LIBRARIES命令是在本项目中对其他工程的依赖设置的,这里设置其依赖Base工程,这就相当于vs里的工程引用了,CMake根据项目间的依赖设置项目生成顺序。

    FIND_PACKAGE就是用来发现第三方库的,它首先会在模块路径中寻找Find.cmake,这里就是查找FindLog4cpp.cmake,模块路径就是CMAKE_MOULE_PATH指定的那个。

    .cmake文件里其实写的也是cmake语句,你完全可以不用它,自己在CMakeLists.txt里写,不过写到它里面会更整洁明了。通常比较流行第三方库的Find.cmake文件不用自己手写,你总是能在网上找到它。我将我所有可能用到的第三方库Find.cmake都放到这里。
    IF(Log4cpp_FOUND)
        INCLUDE_DIRECTORIES(${Log4cpp_INCLUDE_DIR})
        TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Log4cpp_LIBRARY})
    ELSE()
        MESSAGE(STATUS "CANNOT FIND LOG4CPP LIBRARY")
    如果找到了Log4cpp,则Log4cpp_FOUND会赋值为true,它其实是FindLog4cpp.cmake里面的一个变量,同时将Log4cpp_INCLUDE_DIR加入其头文件搜索路径,Log4cpp_LIBRARY作为其依赖库。它俩需要在外部设置。如果找不到MESSAGE会输出一条错误,它也被经常用来打印调试信息,总之是非常有用的。打开FindLog4cpp.cmake看一看:

    可以看到里面的语法跟外面的是一模一样的。

    四、在VS2017中编译CMake工程

    用过CMake的都知道,在windows上用cmake生成sln时,就会给它设置第三方目录,也就是给第三节的Log4cpp_INCLUDE_DIR等变量赋值,赋值成功后,可以在工程目录下生成各个vs版本的sln文件,再编译它。

    而在vs2017中已经支持直接打开CMakeLists.txt了,那么第三方目录在哪设置,sln又生成在哪里了呢。在根目录中右击CMakeLists.txt选择“配置cmake”,这时在根目录下会生成CMakeSettings.json文件,CMakeLists.txt里用到的配置都可以写在这里。

    其中,buildRoot就是sln生成目录了。variables就是用来对CMake中用到的变量进行赋值。这里我把第三方库的编译结果,都放在根目录的third_party文件夹中,这跟我们通常的做法没什么两样。

    将变量都设置正确后,CMake工程就可以在vs2017上编译成功了。其他调试之类的与非CMake工程没什么区别。

    五、在Linux上编译

    当我们在Windows上代码都弄好了之后,剩下的只是在Linux上编译而已。Linux对第三方库的管理比Windows强大的多,常用库输入sudo apt-get install就可以安装了。找不到也没关系,只需要下载后直接编译就好,不像windows还要生成sln才能编译。还以Log4cpp为例,从github上下载好后,键入如下命令:

    cd log4cpp

    mkdir build

    cmake ..

    make

    make install

    Log4cpp就安装完毕了

    编译结果通常都会放到/user/include、/user/local/user之类的文件夹下,所以用FindCMake是能直接找到的。第三方库全部下载好之后,就进入根目录文件夹,键入类似命令:

    cd log4cpp

    mkdir build

    cmake ..

    make

    大功告成

     

     

     

    展开全文
  • #include "snake\snake.h" int main() { snakeGame Snake; Snake.snakeMain(); return 0; }
  • 中国象棋不仅是一种娱乐性游戏,也是一种竞技类游戏,它甚至被列入了国家的体育项目。也正因为如此,中国象棋不仅在国内风靡,甚至在全球都引发了一阵中国象棋风。 完成中国象棋游戏,需要...这款用C++写的中国象...

    中国象棋不仅是一种娱乐性游戏,也是一种竞技类游戏,它甚至被列入了国家的体育项目。也正因为如此,中国象棋不仅在国内风靡,甚至在全球都引发了一阵中国象棋风。
    在这里插入图片描述
    完成中国象棋游戏,需要实现如下功能:

    1.实现人与人之间象棋的对弈。

    2.每次走子之前都会判断是否符合规则,若不符合规则就要重新走子。

    3.程序随时判断是否有一方取得胜利,该局结束。
    在这里插入图片描述
    项目结构展示:
    在这里插入图片描述
    部分源码展示:
    在这里插入图片描述
    这款用C++写的中国象棋游戏,界面看上去挺不错,可以选择人与电脑对战,通过网络人与人对战,程序虽小,不过考验的编程水平是多方面的,因此通过游戏我们有学习不少实用的技巧。
    在这里插入图片描述
    最后,如果你在学习C/C++的过程中遇到了问题,可以来问小编哦~小编很热情的(●’◡’●)

    声明:本文内容来源于网络,如有侵权请联系删除

    展开全文
  • 最新《黑马24期C++项目实战

    千次阅读 2019-05-06 10:52:01
    黑马24期C++视频教程 黑马24期C++视频教程 黑马24期C++视频教程 下载地址:百度网盘

    黑马24期C++视频教程

     

    黑马24期C++视频教程

     

    黑马24期C++视频教程

     

    下载地址:百度网盘

    展开全文
  • 项目结构展示: 部分源码展示: C++编写的城市公交车查询系统,需要先配置数据源,这个小系统能够按车次、车站查询公交车,会列出查询路线所经过的停靠点,在VC6下顺利编译。 最后,如果你在学习C/C++的过程中...

    公交查询系统是为推进地名信息服务工作,软件基于ACESS数据库,只要将公交站点等信息输入数据库,就可以很快构建成一个简单、实用的本地公交查询系统。
    在这里插入图片描述
    实现界面如下:
    在这里插入图片描述
    项目结构展示:
    在这里插入图片描述
    部分源码展示:
    在这里插入图片描述
    C++编写的城市公交车查询系统,需要先配置数据源,这个小系统能够按车次、车站查询公交车,会列出查询路线所经过的停靠点,在VC6下顺利编译。
    在这里插入图片描述
    最后,如果你在学习C/C++的过程中遇到了问题,可以来问小编哦~小编很热情的

    声明:本文内容来源于网络,如有侵权请联系删除

    展开全文
  • 餐饮管理系统是服务于餐馆的日常管理的,是为了满足餐饮业发展,科学管理...最后,如果你在学习C/C++的过程中遇到了问题,可以来问小编哦~小编很热情的(●'◡'●) 声明:本文内容来源于网络,如有侵权请联系删除
  • 国内唯一活跃开发的邮件系统软件。最早诞生于2004年底,于2005/9/18正式发布。...小编用C++编写了一款很不错的邮件发送系统,界面友好,功能很多,VS下顺利编译成功,发邮件前需要进行SMTP邮件设置,测试进可以...
  • C++项目实战(一)——简单商品销售系统实现

    千次阅读 多人点赞 2019-08-15 21:33:45
    项目仅通过使用win32控制台应用程序实现一个简单的商品销售系统,主要涉及知识点包含:类的设计与使用、文件流操作、标准模板库的使用。 需求分析: 我们需要实现一个能进货、能售出的商品销售系统,所以根据面向...
  • 酒店管理系统一般包含前台接待、前台收银、客房管家、销售POS、餐饮管理 、...一个简易的C++宾馆管理系统,Access数据库,可以完成对宾馆客户标准的信息输入,客户信息的管理、订房以及结算信息的维护管理等,运行...
  • P2P下载器(Linux下C++项目实战

    千次阅读 2019-08-24 10:50:44
    一、项目介绍 1.项目功能 搜索附近(局域网内)在线用户, 此处不足(只能在局域网内获取,需要网络穿透技术获取别的网络),获取到在线用户列表,可以查看指定用户的共享文件列表,然后对感兴趣的文件进行下载。 ...
  • FTP服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。...这是一个用C++编写的小型FTP服务器源代码,VC6.0下顺利编译,界面是英文的。 项目结构展示: 源码展示: 这个小型的FT...
  • C++在线考试系统,Access/MSSQL数据库可选,从权限操作来看,包含学生,教师,管理员三个等级不同界面,不同功能;从考试系统功能来说,除了提供基本的考试功能外,还可进行考生信息修改、成绩查询、在线答疑、答案...
  • 网络电话通过把语音信号经过数字化处理、压缩编码打包、透过网络传输、然后解压、把数字信号还原成声音,让通话对方听到,网络语言便利了人们的生活。...项目结构展示: 相关的代码如下: 声明:本...
  • 项目结构展示: 源码展示: 可以创建不同科目的题目,且对这些不同的科目加入不同的题目。或者对已有的科目添加题目,修改题目,删除题目。通过此功能考试系统可以定时,即考试时间自动记时。还可以自动...
  • 今天再为大家介绍一个常用的管理系统——图书管理系统,希望大家可以亲自动手...最后,如果你在学习C/C++的过程中遇到了问题,可以来问小编哦~小编很热情的(#^.^#) 声明:本文内容来源于网络,如有侵权请联系删除
  • 项目结构展示: 源码展示: 学生成绩管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库...
  • 图书管理系统,是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。利用信息控制企业的行为;帮助企业实现其规划目标。在现代大中型企业纷纷...项目结构展示: 源码展示: ...
  • 项目结构展示: 部分源码展示: 如果要监视某台计算机的桌面,则必须在该计算机安装本服务端,如果要想成为一款真正的监控程序,那还差很远,不过核心代码已经实现了远程桌面传输,以此为基础,拓展出功能更强大的...
  • C++ 车牌定位与识别,对图像处理和模式识别有参考价值,C++实现图像预处理,特征提取,以及神经网络识别。实现界面展示: 测试结果: 项目结构展示: 部分源码展示: 总结:1.获取的车牌规格要统一,...
  • 过去传统的售票方式已经不能满足现代航空业务流量剧增的客观要求,此次项目开发便是利用开发工具VS开发一个民航售售票管理系统,它能方便快捷地运用在民航业务的营运之中。 订票系统功能模块图: 实现界面如下...
  • 图书馆管理系统的工作流程非常简单,首先在电子标签内写入...一个用C++代码编写的图书管理系统,大致测试了一下,运行正常,需要的DLL文件已整合进压缩包。这个图书系统可以完成用户资料管理,图书资料管理,借阅/还...
  • 项目结构展示: 源码展示: 从软件的结构来讲有B/S架构与C/S架构。B/S架构经常遭到黑客攻击,“开房信息泄露事件”就是因为遭到攻击而造成的。C/S架构的服务器在本地,数据更安全。 声明:本文...
  • 某宝买的21天学通C++视频教程 某宝买的21天学通C++视频教程 某宝买的21天学通C++视频教程 下载地址:百度网盘
  • 一,先上图 还是相当美观的~  二,实现原理: (一)首先放一个ScrollArea在上面,和播放列表类似,全部东西都放在上面,再对其内部布局即可。  (二)就是真正的皮肤盒子,里这个大小是固定的~至少宽度固定,...
  • 播放列表的开关界面 这是开关界面与添加界面 这个可以说是我遇到的最不好做的部分~先说按钮我来画一个图来解释一下就容易看懂 差不多这张图片能反映整个播放列表的框架构成。有三层构成。各种细节是很值得人琢磨...
  • C++项目开发实战入门随书配套资料 网盘不一定永久有效,只提供网盘链接

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,486
精华内容 13,394
关键字:

c++项目实战

c++ 订阅