vscode+cmake编译记录
这是一个十分基础的cmake使用记录
- 文件布局:
my_test # 根目录
|——CMakeLists.txt
src # 源文件目录
|——CMakeLists.txt
|——circle.cc
|——main.cc
include # 头文件目录
|——circle.h
- circle.h:
#ifndef _CIRCLE_H
#define _CIRCLE_H
class Circle
{
private:
double r;
public:
Circle();
Circle(double R);
double Area();
};
#endif
- circle.cc:
#include"circle.h"
Circle::Circle()
{
this->r = 5.0;
}
Circle::Circle(double R)
{
this->r = R;
}
double Circle::Area()
{
return 3.14*r*r;
}
- main.cc:
#include<iostream>
#include"circle.h"
using namespace std;
int main()
{
Circle circle(2);
cout << "Area=" << circle.Area() << endl;
}
- CMakeLists.txt:
/
# 指定版本号
cmake_minimum_required(VERSION 3.0.0)
project(circle VERSION 0.1.0)
include(CTest)
enable_testing()
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
# 添加头文件目录
include_directories("/home/suu/Desktop/123/include")
# 添加子文件夹,子文件夹中必须包含CMakeLists.txt
add_subdirectory(src)
# 生成可执行文件
add_executable(main src/main.cc)
# 链接编译好的库文件
target_link_libraries(main Functions)
- CMakeLists.txt:
/src
# 输出消息
message("123123:
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${PROJECT_NAME}
")
# 只能放在根文件里?
# include_directories("${CMAKE_SOURCE_DIR}/include")
aux_source_directory(. LIB_SRCS)
# 编译生成静态库文件
add_library(Functions ${LIB_SRCS})
在vscode中安装cmake tools插件之后在项目中按F7即可完成
但是vscode+cmake tools比较不好的地方就是一个项目它只能从根目录下编译(或许是我功力不够)
cmake常用变量
CMAKE_BINARY_DIR:工程发生编译的目录,/build
CMAKE_SOURCE_DIR:工程的根目录,/
CMAKE_CURRENT_SOURCE_DIR:当前CMakeLists.txt所在的目录
CMAKE_INCLUDE_PATH:添加头文件搜索路径. 默认为空。配合 FIND_FILE() 以及 FIND_PATH 使用
CMAKE_LIBRARY_PATH:添加库文件搜索路径. 默认为空。配合 FIND_LIBRARY() 使用