CMake下头文件和链接库的使用

2023-05-16

摘自:https://blog.csdn.net/weixin_38988633/article/details/92733610

CMake下头文件和链接库的使用

一叶一江秋 2019-06-17 22:33:02 3705 收藏 12

文章标签: CMake 头文件 链接库 c++

版权

一、头文件与链接库文件的区别

头文件:申明函数接口
库文件:存放函数的定义
库文件通过头文件向外导出接口,用户通过头文件找到库文件中需要的函数实现代码进行链接至程序当中。

二、静态链接库(lib)与动态链接库(dll)的区别

  1. 静态链接库将文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要该库文件。动态链接库将被调用的函数所在的文件模块(dll)和调用函数在文件中的位置等信息链接进目标程序,程序运行时在从dll中寻找相应函数代码,此时仍然需要dll文件的支持。
  2. 采用静态链接库时,lib中的所有指令全部被包含在最终生成的exe文件中。使用动态链接库,则该dll不必要被包含在最终的exe文件中,exe文件执行时可以“动态”地引用和卸载这个与exe文件独立的dll文件。
  3. 库中代码被载入的时刻:
    静态库在程序编译时被链接到目标代码中。
    动态库在编译时被引用,在程序运行时才被载入。

三、CMake中添加头文件与链接库

# 添加子目录
add_subdirectory()

# 查找当前目录下的所有源文件
aux_source_directory()

# 添加头文件目录
# 相当于环境变量中增加路径到INCLUDE_PATAH路径
include_directories()

# 添加需要链接的库文件目录
# 相当于在环境变量中增加LIBRARY_PATH路径
link_directories()

四、使用一个简单的项目展示

新建项目,项目名为TestAdd,添加文件夹和源文件头文件如下图所示:在这里插入图片描述
CMakeLists.txt

# cmake最低版本号要求
cmake_minimum_required(VERSION 3.14)

# 项目名
project(TestAdd)

# 添加头文件
include_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}/include
)

# 添加连接库
link_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}/lib
)

# 指定生成目标
add_executable(TestAdd main.cpp lib/add.cpp include/add.h)

add.h

#ifndef TESTADD_ADD_H
#define TESTADD_ADD_H

int add(int n1,int n2);

#endif //TESTADD_ADD_H

add.cpp

#include "../include/add.h"

int add(int n1,int n2)
{
    return n1+n2;
}

main.cpp

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

int main() {
    int a=1,b=2;
    cout<< add(a,b);
}

运行程序:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake下头文件和链接库的使用 的相关文章

随机推荐