应用_Cmake
Cmake
开源、跨平台的构建工具,通过编写简单的配置文件去生成本地的Makefile,独立于运行平台和编译器
不用亲自去编写Makefile,配置文件可以直接拿到其它平台上使用,无需修改,非常方便
# 版本
cmake_minimum_required (VERSION 2.8)
#工程 project (demo)
#设置变量 set(PROJ_SRC_PATH ${PROJECT_SOURCE_DIR}/proj/src)
#下一级目录 add_subdirectory(proj) #头文件() include_directories(${PROJ_INC_PATH})
#编译静态库 add_library (testFunc_static STATIC ${testFunc_static})
#修改静态库名称 set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "Func_static")
#链接静态库(add_executable 位置前) link_libraries(${LIBRARY_OUTPUT_PATH}/libFunc_static.a)
#编译动态库 add_library (testFunc_shared SHARED ${testFunc_shared})
#修改动态库名称 set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "Func_shared")
#链接动态库(add_executable 位置前) link_libraries(${LIBRARY_OUTPUT_PATH}/libFunc_shared.so)
#可执行文件 add_executable(a.out ${SRC_LIST})
#链接动态静态库(add_execuble 位置后)
target_link_libraries (main ${TESTFUNC_LIB})
#目录所有文件变量 aux_source_directory(./ SRC_LIST)
#添加编译选项
add_compile_options(-std=c++11 -Wall)
#添加控制选项
git: https://gitlab.com/panda-wangxy/cmake
1. 静态库:(.a、.lib)
动态库:(.so、.dll)
优质博客:
https://blog.csdn.net/whahu1989/article/details/82078563
https://www.cnblogs.com/zhoug2020/p/5904206.html
https://www.jianshu.com/p/9d246e4071d4
Makefile
// 1_交叉编译工具链 CROSS_COMPILE = arm-none-linux-gnueabi- CC = $(CROSS_COMPILE)gcc //2_指定内核当前路径 KERNEL_DIR = /home/kernel/driover/linux-3.0.8 CUR_DIR = $(shell pwd) //3_指定生成的文件 MYAPP = app MODULE = drv //4_编译 all: make -C $(KERNEL_DIR) M=$(CUR_DIR) modules ifneq ($(MYAPP),) $(CC) $(myapp) -o $(MYAPP) endif //5_清除 clean: make -C $(KERNEL_DIR) M=$(CUR_DIR) clean rm -rf $(MYAPP) //6_拷贝 install: cp *.ko $(MYAPP) /opt/rootfs/drv //7_指定当前目录文件作为内核模块编译 obj-m += $(MODULE).o
obj — y : 编译进内核
obj — : 不编译进去
obj — m : 编驱动模块
Stay hungry, stay foolish
待续。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!