【C++】vscode+cmake的编译使用

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() 使用

CMake入门实战: https://www.hahack.com/codes/cmake/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值