gcc main.app
g++ main.App
touch CMakeList.txt
vim CMakeList.txt
cmake还可以直接在当前目录进行编译,无须建立build目录。但是,这种做法会将所有生成的中间文件和源代码混在一起,而且cmake生成的makefile无法跟踪所有的中间文件,即无法使用”make distclean”命令将所有的中间文件删除。因此,我们推荐建立build目录进行编译,所有的中间文件都会生成在build目录下,需要删除时直接清空该目录即可。
//CMakeList.txt
project (helloSlam)
add_executable(sayHello main.app)
lvan@lvan-VirtualBox:~/shenlan$ mkdir build
lvan@lvan-VirtualBox:~/shenlan$ cd build
lvan@lvan-VirtualBox:~/shenlan/build$ cmake ..//解析上层文件
lvan@lvan-VirtualBox:~/shenlan/build$ make //编译
lvan@lvan-VirtualBox:~/shenlan/build$ ./sayHello //调用sayHello输出Hello Slam
Hello Slam
建立库函数
lvan@lvan-VirtualBox:~/shenlan$ mkdir include src
lvan@lvan-VirtualBox:~/shenlan$ touch include/Hello.h src/Hello.cpp
lvan@lvan-VirtualBox:~/shenlan$ vim include/Hello.h
lvan@lvan-VirtualBox:~/shenlan$ vim src/Hello.cpp
lvan@lvan-VirtualBox:~/shenlan$ vim main.cpp
lvan@lvan-VirtualBox:~/shenlan$ vim CMakeList.txt
1、头文件 函数的声明
// include/Hello.h
#pragma once
void SayHello();
~
2、源文件 函数的定义
// src/Hello.cpp
include "Hello.h"
include <iostream>
using namespace std;
void SayHello(){
cout<<"Hello,SLAM!"<<endl;
}
3、执行文件(main.cpp) 调用函数
// main.cpp
#include "Hello.h"
using namespace std;
int main( int argc, char** argv ){
SayHello();
return 0;
}
4、CMakeList.txt
add_library 生成库文件,编译的结果是libhello
tar:连接,sayHello 调用libHello
include_directories:指明include文件是指定头文件的地方
# 声明要求的 cmake 最低版本
cmake_minimum_required(VERSION 2.8)
# 声明一个 cmake 工程
project(HelloSLAM)
# 设置编译模式
set(CMAKE_BUILD_TYPE "Debug")
include_directories("include")
add_library( libHello src/Hello.cpp)
add_executable(SayHello main.cpp)
target_link_libraries( SayHello libHello)
然后在build中编译
/build: cmake ..
/build: make
/build: ./SayHello
(1) 另一个程序可能也在编辑同一个文件。
如果是这样,修改时请注意避免同一个文件产生两个不同的版本。
退出,或小心地继续。
(2) 上次编辑此文件时崩溃。
如果是这样,请用 “:recover” 或 “vim -r nginx.conf”
恢复修改的内容 (请见 “:help recovery”)。
如果你已经进行了恢复,请删除交换文件 “.nginx.conf.swp”
以避免再看到此消息。
交换文件 “.nginx.conf.swp” 已存在!
原因如下:
在用vim打开一个文件时,其会产生一个cmd.swap文件,用于保存数据,当文件非正常关闭时,可用此文件来恢复,当正常关闭时,此文件会被删除,非正常关闭时,不会被删除,所以提示存在.swap文件。
解决方法如下:
方法2、ls -a 查询隐藏文件
将后缀名为.swp的文件删除