前言:
最近打算学习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的编译实现。