#目录结构
.
├── app
├── include
│ ├── cls_add.h
│ ├── cls_div.h
│ ├── cls_mul.h
│ └── cls_sub.h
├── lib
├── Makefile
├── obj
│ ├── cls_add.o
│ ├── cls_div.o
│ ├── cls_mul.o
│ ├── cls_sub.o
│ └── main.o
└── src
├── cls_add.c
├── cls_div.c
├── cls_mul.c
├── cls_sub.c
└── main.c
#makefile文件1
source = ./src
include = ./include
objc = ./obj
src = $(wildcard $(source)/*.c)
obj = $(patsubst $(source)/%.c, $(objc)/%.o, $(src))
target = app
myArgs = -Wall -g
CC = gcc
ALL:$(target)
# 链接
$(target):$(obj)
$(CC) $^ -o $@ $(myArgs)
# 预处理 编译 汇编
$(obj):$(objc)/%.o:$(source)/%.c
$(CC) -c $< -o $@ $(myArgs) -I $(include)
clean:
-rm -rf $(obj) $(target)
# 伪目标
.PHONY: clean ALL
# makefile文件2
# 定义变量
source = src
include = include
objc = obj
# 查找所有源文件和目标文件
src = $(wildcard $(source)/*.c)
obj = $(patsubst $(source)/%.c, $(objc)/%.o, $(src))
# 定义目标和编译选项
target = app
myArgs = -Wall -g
CC = gcc
# 默认目标
ALL:$(target)
# 链接目标文件生成可执行文件
$(target):$(obj)
$(CC) $^ -o $@ $(myArgs)
# 编译规则
$(obj):$(objc)/%.o:$(source)/%.c
$(CC) -c $< -o $@ $(myArgs) -I $(include)
# 清理规则
clean:
-rm -rf $(obj) $(target)
# 伪目标
.PHONY: clean all
#cmakelists.txt
.
├── CMakeLists.txt
├── include
│ ├── cls_add.h
│ ├── cls_div.h
│ ├── cls_mul.h
│ └── cls_sub.h
├── lib
├── obj
└── src
├── cls_add.c
├── cls_div.c
├── cls_mul.c
├── cls_sub.c
└── main.c
4 directories, 10 files
# CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(app_test)
# 指定源文件目录 GLOB 搜索指定目录 GLOB_RECURSE 递归搜索指定目录
file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c)
# aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC)
# 指定头文件目录
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
# 指定库文件生成的路径
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
# add_executable(app ${SRC})
add_library(calc STATIC ${SRC})
add_library(calc_s SHARED ${SRC})
#[[
usage:
mkdir build
cd build
cmake ..
make
]]
相关推荐
Linux Makefile的认识及CMake的使用
Linux Makefile的认识及CMake的使用
从Makefile到CMake
本文介绍了从Makefile到CMake的演进过程,重点比较了两者的特点和使用方法。Makefile是直接用于编译的工具,而CMake作为更高层次的配置工具,能够生成Makefile文件。文章详细讲解了Makefile的基础语法、变量使用和自动变量等特性,以及如何通过模式规则实现自动化编译。在CMake部分,系统梳理了CMakeLists.txt的基本结构,包括版本声明、项目设置、编译选项、子目录管理、头文件/库文件链接、可执行文件/库文件的生成规则等核心内容
自组织映射神经网络(SOM)
目录 1 背景:自组织(竞争型)神经网络 2竞争学习的概念与原理 2.1 竞争学习的步骤 2.2 示例 3SOM典型结构 4SOM网的权值调整域 5 SOM Kohonen 学习算法 6 SOM示例 7SOM设计细节 7.1输出层设计 7.2输出层节点排列的设计 7.3 权值初始化问题 7.4学习率的设计 7.5设计拓扑领域 8SOM功能分析 8.1 保序映射 8.2数据压缩 8.3 特征提取 9自组织映射神经网络与K均值算法的区别...
什么是Cmake和Makefile?
目录 1.前言 2.什么是Makefile 3.什么是Cmake 4.Cmake的语法规则 1.前言 在学习视觉SLAM十四讲的时候,对这个Cmake的概念不太清楚(笔者是机械方向转到SLAM这个方向的),在看了很多大神的讲解后,有所收获,写下这篇笔记方便复习(如果写的有什么不对的地方欢迎批评指正),也希望对各位读者有所帮助。在我看到关于Cmake的解释中,有篇文章写的非常通俗易懂,该链接我放在了下方,建议读者可以看看。 什么是Cmakehttps://www.hahack.com/.
【Unity人物动画】SALSA With RandomEyes (语音生成嘴型/人物说话) 使用
SALSA使用探索 之前做项目时想做人物说话的嘴部动作,因为我们的语音是AI合成的,语音片段很多,如果能根据语音生成嘴部动画,那将极大便利我们的工作。后面是找到了SALSA的这款插件,并摸索出使用方法。 1 插件介绍 官方网站:https://crazyminnowstudio.com/ 一个能做2D纸片人和3D人物模型嘴部和眼睛动画的插件,由两人组成的独立工作室(疯狂米诺工作室)开发。 插件全名为SALSA With RandomEyes,2014年上架Asset Store,目前是已下架,替换为新版本
SARscape的DInSAR全流程-以西安市隋大兴唐长安城遗址为例
通过DInSAR对西安市隋大兴唐长安城遗址开展的年度周期性监测,发现成因是地质内部构造断裂带活动所导致的地面产生物理空间上的形变,而地面的沉降与抬升是直接影响城市发展与文化遗产保护最为常见的缓变型不可逆地质灾害。西安市地处汾渭断陷盆地中部,受临潼-长安断裂带影响,导致区域内构造活动较为强烈。由于早年西安市地表水资源匮乏,从上世纪50年代末开始大量开采地下水资源以满足城市人口不断扩张的需求,从而导致地下承压含水层水位急速下降,形成多个局部沉降中心(八里村、西工大、电子城等)。
Makefile和Cmake
makefile工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。CMake允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。
基于DFT的scanshift sdc模板(DFT)
摘要:本文详细介绍了DFT测试模式下的SDC约束方法。
cmake和makefile区别
cmake和makefile区别
批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法?
前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不...
matlab实现MSK调制解调
文章目录一、要求二、设计三、代码四、结果五、结论 一、要求 画出MSK信号产生的信息、I路、Q路信号对比图以及接收端解调的信息恢复的对比图。 二、设计 1.MSK调制 2.MSK解调 三、代码 clear all;clc; N=20; T=1; fc=10; Fs=100; bitstream=randi([0,1],1,N); bitstream1=2*bitstream-1; b0=1; for i=1:N encode_output(i)=b0*bitstream
CMake 生成makefile 步骤
1、首先创建一个目录下的makefile //main.cpp #include<iostream> using namespace std; int main() { cout<<"Hello word!"<<endl; return 0; } 在main文件所在的目录创建CMakeLists.txt //CMakeLists.txt ...
ESP32-C3模组上跑通OTA升级(3)
ESP32-C3模组上跑通OTA升级(3)
Makefile与CMake
避免 Make 将目标视为同名文件,强制执行命令。三、Makefile和CMake的具体案例。与 Makefile 案例完全相同。二、CMake 核心内容。
YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】
yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
CMake和Makefile关系
Makefile是make工具的输入文件,定义了如何构建项目。它适用于手动编写简单项目的构建规则,但在处理复杂项目时可能较为繁琐。CMake是一个更高级的构建系统生成工具,通过文件描述项目的构建过程,再生成特定平台的构建文件(包括Makefile它提供了更多的高级功能和更好的跨平台支持。简而言之,CMake可以被看作是一个更强大、跨平台的项目构建和管理工具,它能够生成Makefile,同时还能够生成其他类型的构建文件,简化复杂项目的构建和管理。下一篇文章讲解 CMake如何生成makefile文件。
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
使用CMake调用Makefile 项目
使用CMake调用Makefile 项目
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
在 Windows 上使用 CMake 生成 Makefile
当在 Windows 上运行 CMake 命令而不指定生成器时,CMake 会尝试选择一个适用于 Windows 的默认生成器。CMake 可能会生成一个适用于 Visual Studio 的项目文件,而不是 Makefile,正是这个原因导致。这意味着生成的构建文件将是针对 Visual Studio 的,而不是 Makefile。打开终端,并将以下行添加到你的 shell 配置文件中(比如。如果你使用的是 CMake 3.19 或更高版本,你可以使用。或其他兼容的 Makefile 生成器。
cmake和makefile区别和cmake指定编译器(cmake -G)
其实很多公司和项目就是直接使用make的,但make代码规则严格,语法过于复杂,在做跨平台和跨编译器时的管理更加复杂,移植到不同环境的成本过大。首先cmake是项目构建生成工具,cmake的代码可以与平台系统和编译器无关。makefile 可以理解为是make工具使用的代码,make读取makefile中的配置信息来实现编译、链接和部署。工具” 只是使用这些工具其实就能够编译出所有的目标,但由于命令过于复杂,编译的流程不好控制。也就是说cmake是用来生成makefile和其他项目生成工具配置的。
Makefile 和 CMake
Makefile 是一种用于,它主要用于 Unix 和类 Unix 系统,如 Linux 和 macOS。💕。🎉Makefile -> Make Tools -> 目标🌸下面是 Makefile 的基本结构。
Makefile 与 CMake 关系指南
Makefile与CMake是C/C++项目构建中的核心工具,二者协同工作形成完整构建链:CMake作为构建生成器,根据CMakeLists.txt生成平台特定的Makefile,再由Makefile指导实际编译过程。Makefile适合小型单一平台项目,语法直接但跨平台性弱;CMake支持跨平台开发,能自动管理依赖并集成测试,适合中大型项目。现代开发推荐组合使用:CMake生成Makefile,再通过make命令编译。
Makefile和Cmake的区别和联系
lkkk
Makefile和cmake学习
这里介绍了Makefile文件和cmake的简单实用
makefile与cmake的基础使用
讲解makefile和cmake的简单用法
Makefile和CMake
如果把这个目录copy到另外的目录上作为备份,因为这些中间文件和makefile组成的工程指向的路径是原来的目录上,所以当我们修改源文件编译的时候,编译的源文件是原来目录上的源文件。如果没有这个声明,make程序会把clean当做是文件,所以如果存在clean文件的时候,那么运行这个规则的时候就会当做文件存在而不执行命令。file文件系统操作,GLOB是把与模式匹配的文件的文件名加入到变量中,GLOB_RECURSE与GLOB类似,但会在匹配的文件的目录中的子目录递归地把匹配的文件的文件名加入到变量中。..
make、makefile、cmake之间的区别与联系
make、makefile、cmake之间的区别与联系 首先说明一下make、makefile、cmake存在的原因 在进行编译时,如果程序只有一个源文件,那么我们可以直接利用gcc命令对其进行编译; 但是,如果程序包含多个源文件的话,用gcc命令对源文件进行逐个编译显然会比较繁琐。尤其是在有大量源文件时,这样繁琐的编译工作很容易会导致混乱; 为了使多个源文件的编译工作更加便捷,就出现了make...
1202



被折叠的 条评论
为什么被折叠?



