自从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)

VS 的makefile工程相关推荐

  1. Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

    一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...

  2. C++开发STM32 Makefile工程

    使用STM32CubeMX生成Makefile工程 修改过程: Tab键是键盘上的Tab,必须使用Tab才能用 基本是照葫芦画瓢 增加:CXX_SOURCES = \Src/main.cpp增加:CX ...

  3. 极简系列|Makefile工程框架(可执行程序、静态库、动态库)

    作为一名Linux系统下的开发人员,平时工作中会经常用Makefile来构建应用开发框架.如果是特别简单的应用,几行makefile代码就可以搞定.但对于稍微上点规模的应用,其可能会包含若干个模块,复 ...

  4. kdevelp 导入makefile工程

    比如upx工程,将upx/src/makefile中makefile改为makefile.am,自用kdevelop导入工程找到makefile.am,生成工程后去掉.am,这样就可以像vs一样调试程 ...

  5. Makefile工程管理语法与使用技巧

    使用GNU Make工具来管理程序是每个Linux工程师必须掌握的技能.Make能够使整个程序的编译.链接只需要一个命令(make)就可以完成. Make的工作主要依赖于一个叫为Makefile的件. ...

  6. Linux之IFS间隔符、C编程、Makefile工程文件、gdb调试、宏定义、预处理、assert和调试用特殊的宏

    1 间隔符 在shell下的for循环语句中,容器中,各个元素之间 是通过 间隔符 来分开的 默认情况下:读取 列表中的值----以 空格.TAB.换行  为间隔符 列表可以为:     常量    ...

  7. Eclipse中使用自己的makefile管理工程

    From: http://blog.csdn.net/whz_zb/article/details/7101164 我用的环境: (1)系统: Ubuntu 11.04 (2)Eclipse + CD ...

  8. STM32CubeMX GCC工程Makefile内容详解

    STM32CubeMX GCC工程Makefile内容详解 基础介绍 因为项目原因,需要对编译系统进行一些比较复杂的使用,但是我对于编译系统这一块并不是非常精通了解,所以需要进行一下学习.正巧,众所周 ...

  9. c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用)

    搞不太懂gcc和cmake(qmake)等的区别 1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器, 它可以编译很多种编程语言(括C.C++. ...

最新文章

  1. mysql8解压版安装没有密码_MySQL8解压版安装
  2. VMware中安装CentOS Linux release 7.4.1708 (Core)
  3. Python入门100题 | 第058题
  4. 银河麒麟可执行文件双击,闪退问题
  5. 数字化时代的新职业教育行业洞察
  6. 鲇鱼效应”也有副作用
  7. SCVMM 2012 部署测试之五向SCVMM中添加Hyper-V主机
  8. 计算机vb小游戏,vb6做的游戏,用vb做简单小游戏代码,vb小游戏程序代码,vb游戏,vb怎么编写,vb有什么用:小游戏vb【VB编写小游戏】-南开游戏网...
  9. 【数据中心管理】之磁盘阵列以及 RAID技术详解
  10. 计算机操作员操作题,[2017年精编]计算机操作员(初级)操作题.doc
  11. 用python绘制树和深林
  12. Linux下解决qtcreator中不能输入中文的问题
  13. 【opencv人脸识别1】从图片中检测人脸
  14. mac 菜单栏图标删除_您可以在Mac菜单栏上显示的所有内置图标(可能)
  15. WebView加载页面出现白屏解决方案
  16. Java SSM毕设 公寓宿舍后勤管理系统(含源码+论文)
  17. 计算机箱图和结构,机箱设计结构篇 内部结构
  18. 安利一款SwitchResX Mac(最好用的屏幕分辨率修改器)
  19. 2022年熔化焊接与热切割考试试题及答案
  20. 【DSP】TMS320F28335的ADC模块

热门文章

  1. c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法
  2. 如何避免表单重复提交
  3. 教你搭建基于typescript的vue项目
  4. 运维自动化之Cobbler安装配置
  5. 企业网络项目PT模拟
  6. zabbix监控nginx,PHP-FPM,ELK报警
  7. 【超简单】MySQL存储引擎的选择与配置
  8. Win8 Metro(C#)数字图像处理--2.66FloodFill算法
  9. vc6.0 简易的tcp网络讲解(二)
  10. Grub及MBR修复