红联Linux门户
Linux帮助

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

发布时间:2017-01-16 11:06:39来源:linux网站作者:YiqiangXu
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时,效果如下:
ubuntu+CLion开发C/C++项目
其中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:
ubuntu+CLion开发C/C++项目
 
附2:
ubuntu+CLion开发C/C++项目
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27862.html