Ubuntu下cmake和CodeBlocks结合编译

前言:

        最近打算学习Opengl,打算用cmake编译,但是写代码需要提示比较好,正好ubuntu上安装了CodeBlocks,所以就用它来结合编译一下。虽然有Visual Studio Code,但是我觉得提示太差劲了,也不怎么熟练配置那些,所以就不考虑了(虽然我也搞过VS code和cmake一起编译的)。接下来的教程就配置CodeBlocks项目编译CMakeLists.txt并运行来展开,内容不多,2~3分钟的阅读量。

1.建项目

        自行安装cmake和CodeBlocks,我这里安装的cmake版本为3.16.3,CodeBlocks版本为20.03。

        在CodeBlocks工具栏选择File->New->Project,弹出的对话框选择左侧Projects标签,选择Empty project。

        点击go->Next->项目配置页,在项目配置页输入你的项目标题,选择项目路径 ,然后next直到选择finish即可。

        

       添加源文件和CMakeLists.txt文件到项目中,这里新建两个测试的来展示。通过File->New->File,弹框选择左侧标签Files,中间选择C/C++ source, 然后Go->next,然后选择C或者C++,这里选择C++。

        然后下一步到设置文件信息这一页,输入文件名称test.cpp后,点击右侧的框(已圈出)然后选择存放的路径即可,在底下把Debug和Release都选上,Finish即可

         添加CMakeLists.txt类似,在File->New->File弹出的对话框内选择Empty file,跟上一步类似然后写入文件名为CMakeLists.txt就可以了(记得选择路径和勾选下面的两个)。

 

         创建完成后的项目架构如下,然后我们准备写一下测试代码并开始编译。注意我这里两个文件其实是在同一个路径。

 2.编码和配置编译

        我们这里打印一个简单的hello world来测试。

        test.cpp:

#include <iostream>

int main()
{
    std::cout << "hello, world!" << std::endl;
    return 0;
}

        CMakeLists.txt:

cmake_minimum_required(VERSION 3.10) # 最低要求的版本
project(test) # 项目名称
add_executable(test test.cpp) # 设置可执行文件名称和编译的源文件

        第一步,我们设置CodeBlocks项目配置(这里只配置Debug,Rlease类似),选择工具栏的Project-> Properties,选择Build targets标签,修改中间的Output filename为build/test,这里的意思是我希望cmake编译的东西都在build路径下,可执行文件为我们在CMakeLists.txt中设置test,点击OK保存。(这里有些教程还说让勾选Project settings里的This is a custom Makefile,我发现不勾选也行,如果你编译有问题勾选试试)

        第二步,工具栏Project->Build optios,找到Pre/post build steps标签,在Pre-build steps中输入:

cmake -S . -B build
make -C build

         前一句的意思是指定cmake编译后的所有文件都在build目录下,后一句的意思是cmake后生成的Makefile文件在build目录下,所以需要把当前的路径通过make的命令-C参数转到build目录下再执行make指令,我试过cd无效,也试过make -f build/Makefile也无效,只有这个方式完美解决问题。记得点击OK保存!

        然后我们就可以点击build and run执行啦。

        "hello  world!"闪亮登场!

 结束语:

        我们这一篇的内容到这里就结束啦,有人可能会问了,我直接CodeBlocks建项目编码编译也可以达到同样的效果,为什么要扯上cmake搞这么复杂呢。其实初衷也很简单,就是工具只是为了方便写代码,实际上是想要在任何地方只要有cmake我同样可以编译我的代码而不再需要ide,只要敲一下 cmake ./ 然后make,最后./test一样能实现以上效果。这里只是简单的hello world,下次分享复杂的opengl的编译实现。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值