头文件和源文件分别在两个文件夹里,编译成库文件

对于小项目,头文件和源文件在一个文件夹里,整个文件布局如下:
test #主目录
---main.cpp
---CMakeLists.txt
---src #子目录
------functions.cpp
------functions.h
------CMakeLists.txt

这样运行的过程就是用main 函数调用编译好的库文件即可
此时,子目录的CMakeLists.txt写法如下:

# 查询当前目录下所有的源文件并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)
# 编译成静态库文件
add_library(Functions ${DIR_LIB_SRCS})

主目录test下的CMakeLists.txt写法如下:

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
set( CMAKE_BUILD_TYPE Release )
set( CMAKE_CXX_FLAGS "-std=c++11" )
# 项目信息
project (Demo2)
# 查找当前目录下的所有源文件并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
#添加子目录
add_subdirectory(functions)
# 生成可执行文件
add_executable(main ${DIR_SRCS})
target_link_libraries(main Functions) #连接到编译好的库文件

test目录下的main函数#include 头文件

#include "src/functions.h" 

对于较大的项目,头文件和源文件分别在不同的文件夹里,此时可以采用类比法。还是上面的例子,只不过此时文件结构发生变化
test #主目录
---main.cpp
---CMakeLists.txt
---src #子目录
------functions.cpp
------CMakeLists.txt
---include
------functions.h

这个时候src子目录文件下的CMakeLists.txt要发生小小变换即可

include_directories("/home/yuancaimaiyi/桌面/test/include")#发生变化之处,只需要添加头文件的目录即可
aux_source_directory(. DIR_LIB_SRCS)
# 编译成静态库文件
add_library(Functions  ${DIR_LIB_SRCS})

++主目录CMakeLists.txt不变++,还有一处变化的是主目录下的主函数main #include 的时候要变了

#include "include/functions.h"
多采用第二种方式写法,规范自己
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在Linux内核中,通常有许多头文件源文件需要编译成.ko(内核对象)文件,以实现对特定功能或驱动程序的支持。 首先,头文件包含了函数和数据结构的声明,被其他源文件引用。这些头文件通常以.h文件扩展名结尾。源文件则包含了函数和数据结构的实现,通常以.c或.cpp文件扩展名结尾。 为了将多个头文件源文件编译成.ko文件,使用Makefile是一个常见的方法。Makefile是一个文本文件,包含了一系列的规则,指定了文件的依赖关系以及编译和链接的命令。 Makefile中的规则通常包括以下几个步骤: 1. 定义目标文件(.ko文件)的名称和相关的编译选项。 2. 定义依赖关系,即指定哪些源文件头文件需要进行编译。 3. 定义编译命令,通常使用gcc或其他编译器执行编译操作。例如,可以使用gcc -c命令将源文件编译成目标文件(.o文件)。 4. 定义链接命令,将所有目标文件链接成一个.ko文件。例如,可以使用gcc -o命令将所有目标文件链接成一个.ko文件。 在执行Makefile时,会根据规则的定义逐步执行编译和链接的操作,生成最终的.ko文件。同时,Makefile还可用于指定其他操作,例如清除中间文件或执行其他自定义操作。 总而言之,将多个头文件源文件编译成.ko文件可以通过使用Makefile来定义编译和链接的规则,并将其作为输入参数传递给编译器。Makefile中的规则会根据文件的依赖关系逐步执行编译和链接的操作,最终生成所需的.ko文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值