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

作者: YiqiangXu 2017-01-16 11:06:39

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参考资料[附1]。


 


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用法[附2]


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编译即可,非常方便。图中错误是CLion2016.3.2的一个bug,CLion相对其他IDE起步较晚些,但是几个月更新一个版本,这些问题都会解决。


 


总结:


总之,CLion比vim方便多了,但是其与cmake结合密切,相对VS而言更底层一些,能够更好的理解C++项目的组织架构。


使用IDE要专注于一个,之前使用IntelliJ IDEA,其他很多人使用eclipse,自己踩了很多坑,但是现在就比较爽,虽然CLion使用者不是很多,但是IDE需要注意的地方就是那些个,搜索一下,看看官网就能解决。


 


附1:




 


附2:




 


本文永久更新地址:http://www.linuxdiyf.com/linux/27862.html

相关资讯