`
isiqi
  • 浏览: 16577298 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

VS 的makefile工程

阅读更多

自从IDE 的出现简化了代码文件之间关联性管理后,就没多少愿意用makefile 管理工程的了。makefile 的语法规则也不复杂,加上后续的automake 让编写的东西又简化了不少,但是相比IDE 点一下build 的操作来说依然是没有可比性的。各个平台下的IDE 对工程文件的规则都不一样,想要工程跨平台唯一适合互通的也就只有makefile 了,想必这也是目前makefile 还依然活跃的重要理由之一吧。

微软的IDEVC 6 以后就越发的对makefile 不友好了,之前的导入导出操作在后续的VS 里都没了,估计总觉得GNU Make 不适合垄断吧,搞了个NMake 的标准,非但没GNU Make 灵活(嵌套层次支持少,不支持单字符变量)自个的VS 支持起来也不顺。

但凡免费的第三方库,大都只提供makefile 而不提供. vcproj, 搞得想在VS 里编个库用用还得自己组织一边,大工程搞起来甚为麻烦。笔者被反反复复的转工程折腾几次后,似乎找到了个救命稻草- VS makefile project

这种工程并不能帮你简化编写 makefile 的过程,也不能帮你导出已有 vcproj 工程到一个 makefile 里, 它的目的很简单就是把符合NMake 规则的makefile 和代码文件拽到一个虚拟的文件夹里,方便习惯了用solution explorer(SE) 的人来修改管理这些东西,调用cl.exelink.exe 来执行makefile 的内容生成当前平台下的目标文件(exe|lib|dll) 。与其他工程不一样的是即便加到solution explorer 里,源文件并不会编译中间代码。

基于以上目的,该工程的Wizard 也很是简陋:

其实算得上有用的也是左边的3command line, 这里需要填写的是nmake xxxxmakefile 里定义的某个目标,一般来说makefile 里都会有allclean2 个目标,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 工程管理器

    ### Linux Makefile工程管理器知识点详解 #### 一、Makefile概述 **Makefile** 是一种用于自动化构建软件项目的脚本文件,在Linux环境下被广泛使用。通过定义一系列规则,Makefile 能够根据文件的修改时间自动确定...

    makefile工程文件.zip

    【标题】:“makefile工程文件.zip”是一个包含Makefile的压缩包,它是针对Linux系统进行网络编程的一个项目。这个工程文件的创建者在个人博客中详细解析了如何编写和使用Makefile,特别是针对两种不同的编写方法...

    makefile工程 模板

    makefile工程通常由以下几个关键部分组成: 1. **目标(Targets)**:这是makefile的核心,指定要创建的文件或者执行的操作。例如,`all`目标通常用于代表整个项目的构建,而`clean`目标则用于清除编译产生的临时...

    Linux Makefile工程实战教程.zip

    在这个“Linux Makefile工程实战教程”中,你将深入学习如何编写和运用Makefile,从基础概念到复杂的项目构建,一步步构建一个模拟MP3项目的Makefile。 首先,你需要了解程序的编译和链接基础。在`1.2 程序的编译和...

    简单makefile工程

    在这个名为"简单makefile工程"的项目中,我们关注的核心是Makefile的使用,以及如何进行交叉编译,创建静态库和动态库,同时处理多个编译目标。以下是对这些知识点的详细解释: 1. **Makefile**:Makefile是用于...

    一个makefile 标准工程

    本文将围绕"一个makefile标准工程"的主题,结合具体的Audio-Makefile实例,深入探讨Makefile的核心概念、结构以及如何编写和使用Makefile。 一、Makefile基础 Makefile是构建程序的一种规则集合,它定义了目标文件...

    codeblocks工程转makefile

    然而,有些情况下,开发者可能希望脱离IDE,直接使用命令行工具如`make`来编译项目,这时就需要将CodeBlocks的工程文件转换为`makefile`。`makefile`是一个文本文件,它包含了构建项目的规则和指令,使得编译过程...

    stm32自写makefile工程

    STM32自写Makefile工程是一项重要的技能,尤其对于嵌入式系统开发者而言。Makefile是构建项目的自动化工具,能够简化编译、链接等过程,提高开发效率。在这个项目中,我们关注的是如何为STM32微控制器编写自定义的...

    stm32 Makefile工程

    STM32 Makefile工程是为基于ARM Cortex-M内核的STM32微控制器构建应用程序的一种方法。Makefile是一个脚本文件,它告诉编译器如何编译、链接和生成可执行程序,尤其在嵌入式系统开发中,它在管理项目源文件、库和...

    linux makefile 工程目录下,所有c文件

    在这个特定的场景中,我们的任务是编写一个Makefile来处理工程目录下所有C语言源文件的编译,包括可能存在的子目录中的文件。下面我们将详细探讨如何实现这一目标。 首先,我们需要理解Makefile的基本结构和规则。...

    工程makefile详解

    Makefile 是一个工程的编译规则定义文件,它告诉 make 命令如何编译和链接文件。Makefile 的作用是自动完成编译工作的规则,包括隐晦规则和显式规则。Makefile 的主要内容包括:显式规则、隐晦规则、变量定义、文件...

    Makefile文件例程于工程模板

    在这个"Makefile文件例程于工程模板"压缩包中,提供了6个逐步进阶的Makefile示例,从基础到复杂,适合初学者学习和理解Makefile的编写以及在中小型项目中的应用。 1. **Makefile基本结构** Makefile通常由目标、...

    makefile 工程化代码

    在软件开发过程中,工程化代码管理是至关重要的,而`Makefile`正是实现这一目标的重要工具。`Makefile`是一个脚本文件,用于自动化编译、链接和其他构建过程,使得开发者能够高效地管理和构建项目。它定义了一系列...

    linux实验五 MAKEFILE工程管理

    ### Linux实验五:MAKEFILE工程管理 #### 一、实验目的 本次实验旨在使学生能够熟练掌握Makefile在工程管理中的应用方法。Makefile是一种用于自动化编译过程的脚本文件,尤其适用于处理大型项目中复杂的编译需求。...

    Makefile工程实战.pdf

    1. **构建工程**: 在项目目录`operation`中,我们创建了`add.c`和`add.h`用于实现加法功能,`operation.c`作为主文件调用这些模块。Makefile中,`TARGET`定义为可执行文件的名字,`OBJ`存储所有目标文件的名称。...

    简单通用Makefile使用示例工程

    针对"简单通用Makefile使用示例工程",我们可以深入探讨Makefile的核心概念和常用指令。 1. **Makefile基本结构**: Makefile通常包含目标(target)、依赖项(dependency)和命令(command)。一个基本的规则格式...

    Makefile自动生成脚本

    在本主题中,我们将深入探讨如何通过shell脚本来自动生成Makefile,特别是针对C和C++工程。 一、Makefile的原理与基本结构 Makefile是一个文本文件,其中包含了命令和规则,告诉make工具如何构建项目。基本结构包括...

    Makefile-Demo-Aurix平台

    Makefile是用于自动化编译、链接等过程的脚本,它可以帮助开发者高效地管理和构建工程。在这个名为"Makefile-Demo-Aurix平台"的示例中,我们将探讨如何在Aurix微处理器平台上利用Tasking编译器(cctc)通过Makefile...

    makefile实例

    总之,`Makefile`是构建工程化项目的重要组成部分,通过学习和实践这个实例,你不仅可以理解`Makefile`的基础知识,还能掌握如何编写和管理自己的构建脚本,提升开发效率。记住,`Makefile`的灵活性和强大功能在于其...

    Makefile进阶 Makefile进阶

    它可以帮助开发者高效地管理和编译复杂的工程项目,特别是在涉及到数百甚至数千个源文件的情况下。 **Makefile 的核心作用:** - **自动化构建**:通过分析依赖关系,自动执行编译操作。 - **增量编译**:仅编译自...

Global site tag (gtag.js) - Google Analytics