ubuntu+CLion开发C/C++项目

why CLion?
CLion有众多好处,如Smart C和C ++编辑器、导航、重构、实时代码分析等,有​跨平台IDE中的百兽之王之称。

我准备使用CLion的主要理由有两点:

其一,我一直使用JetBrains的IDE,如IntelliJ IDEA(java开发),pycharm(python开发),熟悉该公司的IDE,方便快速开发,专注于代码本身。

其二,CLion使用CMake作为项目模型,CLion会自动处理您在CMake文件中的更改,使用代码编辑和重构期间的所有信息。现在写C++项目基本要用的CMake,CLion中写CMakeLists.txt文件非常简单方便,有智能提示,比用vim手写方便多了。CMake参考资料。

CLion CMakeLists.txt添加第三方库
以opencv为例:

前提是按照opencv官方已经正确安装opencv.

方式一:


cmake_minimum_required(VERSION 3.6)
project(hello)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
 
set(SOURCE_FILES main.cpp)
add_executable(hello ${SOURCE_FILES})
target_link_libraries(hello ${OpenCV_LIBRARIES})


方式二(推荐):

cmake_minimum_required(VERSION 3.6)
project(hello)
set(CMAKE_CXX_STANDARD 11)
 
set(SOURCE_FILES main.cpp)
add_executable(hello ${SOURCE_FILES})
# 第三方库位置可以通过命令pkg-config --cflags --libs opencv查看
target_link_libraries(hello -I/usr/local/include/opencv -I/usr/local/include
  -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d
  -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy
  -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo
  -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab
  -lrt -lpthread -lm -ldl)    


补充:pkg-config用法 
pkg-config --cflags opencv:
-I/usr/local/include/opencv -I/usr/local/include

pkg-config --libs opencv:
-L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lrt -lpthread -lm -ldl  

pkg-config --cflags --libs opencv
-I/usr/local/include/opencv -I/usr/local/include  -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lrt -lpthread -lm -ldl 

对比gcc的 -I 参数   去哪儿找头文件 .h        
对比gcc的 -L 参数   去哪儿找库文件 (.so/.dll/.lib/.dylib/...)
对比gcc的 -l 参数   需要链接的库文件的名字


两种截然不同的开发体验
用vim手写CMakeLists.txt费时费力、没有提示、没有实时检验,难度大、容易出错。写完后cmake 之后使用
g++ -o xu_opencv_test xu_opencv_test.cpp -lopencv_core -lopencv_highgui
also:
g++ -o xu_opencv_test xu_opencv_test.cpp `pkg-config --cflags --libs opencv`
编译完成之后,运行可执行文件。
使用CLion时,效果如下:

.................
其中cmake-build-debug文件夹中存放cmake实时生成的中间文件(就是我们运行cmake之后产生的中间文件),如果程序最终不在IDE中运行,只需进入cmake-build-debug文件夹目录下make编译即可,非常方便. CLion相对其他IDE起步较晚些,但是几个月更新迭代一个版本,后发优势明显.

总结:
总之,CLion比vim方便多了,但是其与cmake结合密切,相对VS而言更底层一些,能够更好的理解C++项目的组织架构。
使用IDE要专注于一个,之前使用IntelliJ IDEA,其他很多人使用eclipse,自己踩了很多坑,但是现在就比较爽,虽然CLion使用者不是很多,但是IDE需要注意的地方就是那些个,google一下,看看官网就能解决。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值