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

时间:2024-10-01 18:36:10

why CLion?

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

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

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

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


CLion 添加第三方库

以opencv为例:

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

方式一:

  1. cmake_minimum_required(VERSION 3.6)
  2. project(hello)
  3. set(CMAKE_CXX_STANDARD 11)
  4. find_package(OpenCV REQUIRED)
  5. set(SOURCE_FILES )
  6. add_executable(hello ${SOURCE_FILES})
  7. target_link_libraries(hello ${OpenCV_LIBRARIES})


方式二(推荐):

  1. cmake_minimum_required(VERSION 3.6)
  2. project(hello)
  3. set(CMAKE_CXX_STANDARD 11)
  4. set(SOURCE_FILES )
  5. add_executable(hello ${SOURCE_FILES})
  6. # 第三方库位置可以通过命令pkg-config --cflags --libs opencv查看
  7. target_link_libraries(hello -I/usr/local/include/opencv -I/usr/local/include
  8. -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d
  9. -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy
  10. -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo
  11. -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab
  12. -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手写费时费力、没有提示、没有实时检验,难度大、容易出错。写完后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一下,看看官网就能解决。