自从IDE
的出现简化了代码文件之间关联性管理后,就没多少愿意用makefile
管理工程的了。makefile
的语法规则也不复杂,加上后续的automake
让编写的东西又简化了不少,但是相比IDE
点一下build
的操作来说依然是没有可比性的。各个平台下的IDE
对工程文件的规则都不一样,想要工程跨平台唯一适合互通的也就只有makefile
了,想必这也是目前makefile
还依然活跃的重要理由之一吧。
微软的IDE
从VC 6
以后就越发的对makefile
不友好了,之前的导入导出操作在后续的VS
里都没了,估计总觉得GNU Make
不适合垄断吧,搞了个NMake
的标准,非但没GNU Make
灵活(嵌套层次支持少,不支持单字符变量)自个的VS
支持起来也不顺。
但凡免费的第三方库,大都只提供makefile
而不提供. vcproj,
搞得想在VS
里编个库用用还得自己组织一边,大工程搞起来甚为麻烦。笔者被反反复复的转工程折腾几次后,似乎找到了个救命稻草- VS
的 makefile project
。
这种工程并不能帮你简化编写
makefile
的过程,也不能帮你导出已有
vcproj
工程到一个
makefile
里,
它的目的很简单就是把符合NMake
规则的makefile
和代码文件拽到一个虚拟的文件夹里,方便习惯了用solution explorer(SE)
的人来修改管理这些东西,调用cl.exe
和link.exe
来执行makefile
的内容生成当前平台下的目标文件(exe|lib|dll)
。与其他工程不一样的是即便加到solution explorer
里,源文件并不会编译中间代码。
基于以上目的,该工程的Wizard
也很是简陋:
其实算得上有用的也是左边的3
个command line,
这里需要填写的是nmake xx
,xx
为makefile
里定义的某个目标,一般来说makefile
里都会有all
和clean
这2
个目标,rebuild
无非是把clean + all
放一起就行了。还得去掉默认的输出,要不和makefile
里的重复了。点击finish
以后就可以把工程里的所有文件按你的习惯加入到SE
中了,需要注意的一点是如果不想写太复杂的command,
需要保证makefile
文件的命名为makefile(
大小写均可)
,并放在该vcproj
文件同级目录。
从一个makefile
工程到vs
里的简化流程应该如下:
1
在源文件夹中顶级目录下makefile
(一般每个子目录下都会有个makefile
)所在位置创建该工程vcproj.
2
按makefile
中的目标填写command line
3
把工程中需要修改或管理的文件按习惯加入到solution explorer
中
4
点击编译,如果失败就得按照output
的提示适当修改makefile
,常见的问题都是makefile
里有不符合nmake
规则或是编译标志设置的是gcc
环境的那些宏和变量等等。(
如果工程里有带.nmake
后缀的文件,
果断重命名替换原有的makefile)
-
-------------------------------------------
-------------------------------------------
------------------------------------------
这种工程的用法,其实跟命令行方式下,使用nmake是一模一样的。因为该工程并不会追踪makefile中任何文件的信息,对他来说,它的一切关心的便是MAKEFILE,所以MAKEFILE不变,他的一切行为也不会改变。
并且在工程中任何作出的修改,也不会修改MAKEFILE。
基本上,该工程存在的意义就变成了,仅仅作为一个文件浏览器的前端。就像windows自带的explorer一样。其他,它全不关心。
对一个第三方库的轻量级修改的话,还是有用的!
分享到:
相关推荐
### Linux Makefile工程管理器知识点详解 #### 一、Makefile概述 **Makefile** 是一种用于自动化构建软件项目的脚本文件,在Linux环境下被广泛使用。通过定义一系列规则,Makefile 能够根据文件的修改时间自动确定...
【标题】:“makefile工程文件.zip”是一个包含Makefile的压缩包,它是针对Linux系统进行网络编程的一个项目。这个工程文件的创建者在个人博客中详细解析了如何编写和使用Makefile,特别是针对两种不同的编写方法...
makefile工程通常由以下几个关键部分组成: 1. **目标(Targets)**:这是makefile的核心,指定要创建的文件或者执行的操作。例如,`all`目标通常用于代表整个项目的构建,而`clean`目标则用于清除编译产生的临时...
在这个“Linux Makefile工程实战教程”中,你将深入学习如何编写和运用Makefile,从基础概念到复杂的项目构建,一步步构建一个模拟MP3项目的Makefile。 首先,你需要了解程序的编译和链接基础。在`1.2 程序的编译和...
在这个名为"简单makefile工程"的项目中,我们关注的核心是Makefile的使用,以及如何进行交叉编译,创建静态库和动态库,同时处理多个编译目标。以下是对这些知识点的详细解释: 1. **Makefile**:Makefile是用于...
本文将围绕"一个makefile标准工程"的主题,结合具体的Audio-Makefile实例,深入探讨Makefile的核心概念、结构以及如何编写和使用Makefile。 一、Makefile基础 Makefile是构建程序的一种规则集合,它定义了目标文件...
然而,有些情况下,开发者可能希望脱离IDE,直接使用命令行工具如`make`来编译项目,这时就需要将CodeBlocks的工程文件转换为`makefile`。`makefile`是一个文本文件,它包含了构建项目的规则和指令,使得编译过程...
STM32自写Makefile工程是一项重要的技能,尤其对于嵌入式系统开发者而言。Makefile是构建项目的自动化工具,能够简化编译、链接等过程,提高开发效率。在这个项目中,我们关注的是如何为STM32微控制器编写自定义的...
STM32 Makefile工程是为基于ARM Cortex-M内核的STM32微控制器构建应用程序的一种方法。Makefile是一个脚本文件,它告诉编译器如何编译、链接和生成可执行程序,尤其在嵌入式系统开发中,它在管理项目源文件、库和...
在这个特定的场景中,我们的任务是编写一个Makefile来处理工程目录下所有C语言源文件的编译,包括可能存在的子目录中的文件。下面我们将详细探讨如何实现这一目标。 首先,我们需要理解Makefile的基本结构和规则。...
Makefile 是一个工程的编译规则定义文件,它告诉 make 命令如何编译和链接文件。Makefile 的作用是自动完成编译工作的规则,包括隐晦规则和显式规则。Makefile 的主要内容包括:显式规则、隐晦规则、变量定义、文件...
在这个"Makefile文件例程于工程模板"压缩包中,提供了6个逐步进阶的Makefile示例,从基础到复杂,适合初学者学习和理解Makefile的编写以及在中小型项目中的应用。 1. **Makefile基本结构** Makefile通常由目标、...
在软件开发过程中,工程化代码管理是至关重要的,而`Makefile`正是实现这一目标的重要工具。`Makefile`是一个脚本文件,用于自动化编译、链接和其他构建过程,使得开发者能够高效地管理和构建项目。它定义了一系列...
### Linux实验五:MAKEFILE工程管理 #### 一、实验目的 本次实验旨在使学生能够熟练掌握Makefile在工程管理中的应用方法。Makefile是一种用于自动化编译过程的脚本文件,尤其适用于处理大型项目中复杂的编译需求。...
1. **构建工程**: 在项目目录`operation`中,我们创建了`add.c`和`add.h`用于实现加法功能,`operation.c`作为主文件调用这些模块。Makefile中,`TARGET`定义为可执行文件的名字,`OBJ`存储所有目标文件的名称。...
针对"简单通用Makefile使用示例工程",我们可以深入探讨Makefile的核心概念和常用指令。 1. **Makefile基本结构**: Makefile通常包含目标(target)、依赖项(dependency)和命令(command)。一个基本的规则格式...
在本主题中,我们将深入探讨如何通过shell脚本来自动生成Makefile,特别是针对C和C++工程。 一、Makefile的原理与基本结构 Makefile是一个文本文件,其中包含了命令和规则,告诉make工具如何构建项目。基本结构包括...
Makefile是用于自动化编译、链接等过程的脚本,它可以帮助开发者高效地管理和构建工程。在这个名为"Makefile-Demo-Aurix平台"的示例中,我们将探讨如何在Aurix微处理器平台上利用Tasking编译器(cctc)通过Makefile...
总之,`Makefile`是构建工程化项目的重要组成部分,通过学习和实践这个实例,你不仅可以理解`Makefile`的基础知识,还能掌握如何编写和管理自己的构建脚本,提升开发效率。记住,`Makefile`的灵活性和强大功能在于其...
它可以帮助开发者高效地管理和编译复杂的工程项目,特别是在涉及到数百甚至数千个源文件的情况下。 **Makefile 的核心作用:** - **自动化构建**:通过分析依赖关系,自动执行编译操作。 - **增量编译**:仅编译自...