尝试一下Clion,抛开VS2017吧
引言
在Windows上开发桌面应用或者动态库等,一定绕不开来自于微软的Visual Studio 20XX系列IDE,简称VS。
如果你是一个来自于Linux C++环境下的开发者,可能也会像我一样。
-
快捷键不习惯
-
明明编译成功,却还是报错,莫名其妙
-
函数跳转还要选一次
-
筛选器和文件夹不一一对应,降低效率,总是投入不了编码,没有灵感。
整个人都裂开了,要疯掉了。
当然这个时候有几个选择:
- 继续杠,自我怀疑,坚持使用vs 2017到底,毕竟在2010年的时候,可是号称 “宇宙第一IDE” 的。
- VS Code:很优秀的编辑器,我一般用来开发前端VUE的东西,写一些文档,个人感觉如果习惯用VIM开发C/C++程序的人可能比较喜欢
- Clion:目前再用的一款IDE,配合MAC使用,字体清晰小巧比较秀气,美感十足。配合CMake跨平台(Linux使用g++,mac使用clang,win使用vs或者mingw),个人感觉挺香的,值得一试。
安装
- 下载Clion 2020.2:https://www.jetbrains.com/clion/
- 激活Clion 2020,建议在某宝上花几块钱买个注册码,比自己在网上找省心。
- 配置Toolchains,把Visual Studio移动到上面,变成默认的编译器。如果使用MinGW,注意安装Basic Setup下面的包,Clion会自动配置路径的。参考:Clion下载安装使用教程(Win+MinGW)
- 配置Powershell
使用
新建项目
有2种方式,可以根据现有的源文件创建CMake工程,会自动创建CMakeLists.txt文件。
这里我们使用前一种测试一下:
点击create后,会显示如下界面:
和VS大同小异对吧?
点击菜单栏的"Build”->"Build Project"即可编译。
然后点击"Terminal“启动一个终端:
$ cd cmake-build-debug
$ ls
$ ./testclion.exe # 执行,相当于双击exe程序,此时是创建的控制台应用。
如下:
我们试一下双击,先在目录上右击:
是不是比较方便?
CMakeLists.txt
附带一个常用的CMakeLists.txt:
cmake_minimum_required(VERSION 3.17)
project(core)
set(CMAKE_CXX_STANDARD 11)
# 预编译宏定义
add_definitions(-D CIM_DLL_EXPORTS)
# 源文件,aux_source_directory有点字符串追究的含义,这里可以把整个目录作为源代码编译,而不是一个一个文件。
aux_source_directory(./ src_list)
aux_source_directory(pb src_list)
# 包含目录
include_directories(.)
include_directories(../../third_party/protobuf/include)
include_directories(../../third_party/asio-1.18.0/include)
include_directories(../../third_party/spdlog/include)
include_directories(../../)
# 库目录
link_directories(../../bin)
link_directories(../../third_party/spdlog/lib/Debug)
link_directories(../../third_party/protobuf/lib/win32/Debug)
# 编译
# add_executable:生成exe,
# add_library:生成库,SHARED代表动态库,STATIC代表静态库
#add_executable(core SHARED ${src_list})
add_library(cim_core SHARED ${src_list})
# 链接依赖的库,一定得在add_library的后面
target_link_libraries(cim_core cim_base libprotobufd spdlogd)
结束语
罗卜青菜,各有所爱。毕竟不是2010年的时代,多一种选择总是好的,不是吗?
CLion
优点:
- 跨平台,Windows/Linux/Mac有统一的使用习惯
- 通过文件目录组织代码结构,比较容易管理,创建方便
- 各种插件,比如protobuf提示的,markdown的,plum交互图的等等
- 界面比较美观,主题多
- 函数跳转比较舒服,函数的说明很明确
- 可以看到系统的头文件,比如:
缺点:
- mac下代码补全提示有点慢
- 没有VS2017解决方案的概念,可以把多个项目放在一个视图里面管理
- 不适合超大工程
- 编译有点慢,每次都是全量编译,有点头疼,得找找是否能解决。