cmake多级目录CMakeLists.txt使用

2021年7月20日14:34:14IT开发记录 未分类评论471阅读模式

代码结构

举例代码结构如下,main.cpp需要访问本目录下的Circle以及lib目录下math。

cmake多级目录CMakeLists.txt使用

代码内容

math.h

#ifndef LIB_MATH
#define LIB_MATH

int mul(int input);

#endif

math.cpp

#include "math.h"

int mul(int input)
{
    return 2 * input;
}

Circle.cpp

#include "Circle.h"

Circle::Circle()
{
    this->r=5.0;
}

Circle::Circle(double R)
{
    this->r=R;
}

double Circle:: Area()
{
    return 3.14*r*r;
}

Circle.h

#ifndef CIRCLE_H
#define CIRCLE_H

class Circle
{
private:
    double r;//半径
public:
    Circle();//构造函数
    Circle(double R);//构造函数
    double Area();//求面积函数
};

#endif

main.cpp

#include <iostream>
#include "Circle.h"
#include "math.h"
using namespace std;

int main()
{
    Circle c(3);
    cout<<"Area="<<c.Area()<<endl;

    int val = mul(18);
    cout<<"GetValue="<<val<<endl;
    return 1;

}

CMakeLists.txt编写

主目录下CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(testVScode VERSION 0.1.0)

aux_source_directory(. DIRSRCS)
include_directories(./ ./lib)
add_subdirectory(lib)

add_executable(${PROJECT_NAME} ${DIRSRCS})
target_link_libraries(${PROJECT_NAME} lib)

子目录(lib)下的CMakeLists.txt

aux_source_directory(. DIR_LIB_SRCS)
add_library (lib ${DIR_LIB_SRCS})

然后使用cmake编译即可。