Linux作为一个开源系统,其中的一个优势就是有效的将各种源码编译得到的库集合在一起,为项目的使用创建了便捷。通常情况下,我们在开发自己的开源项目时,喜欢使用cmake调用各种三方库,如opencv , pcl , g2o等,里已有的函数辅助自己的程序开发,目前主流的方法是在项目中写CMakeLIsts.txt文件,采用cmake命令将三方库的动态库链接到项目中,这种方法省去了在IDE中繁杂的环境配置问题。
已经写好的项目的目录结构一般的如下所示:
project----------------bin文件夹 用于存放生成的可执行文件
|---------------build文件夹 用于存放编译,链接过程生成的文件
|---------------Include文件夹 用于存放项目源码的头文件
|---------------src文件夹 用于存放项目的.cpp文件
|---------------lib文件夹 用于存放项目的.so文件
|---------------CMakeLIsts.txt 由于cmake的文件
我们已经了解了cmake项目的目录结构,一般的执行
cd build/
cmake ..
make
就可以在bin文件夹下生成项目的可执行文件。但是在linux系统下调试就遇到了问题,如果没有IDE,那么就只能用linux系统自带的调试器调试了,个人感觉可视性不算太好。所以打算将cmake项目导入到eclipse中可调试。具体转换命令见博客https://blog.csdn.net/wohuiluanshuo/article/details/49205221 , 如果生成可调试的eclipse项目的话,在编写CMakeLIsts.txt时,应加上
set(CMAKE_BUILD_TYPE Debug)
按照博客的方法 ,如果执行
cd build/
cmake -G "Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ..
会出现如下提示
会有CMake Warning 提示说在build文件夹下生成的eclipse项目在eclipse中不能得到很好的支持。事实证明这样生成的eclipse项目不能在eclipse中运行
所以不在build文件夹下进行编译 , 执行如下命令:
cd project/
cmake -G "Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug .
编译结果如下:
可以看到没有CMake Warning 了 ,导入到eclipse中可以编译,可以运行程序,并且可以调试程序。