用NMAKE创建VS2012 C++工程三 自动编译所有的cpp文件
来源:互联网 发布:excel设置不重复数据 编辑:程序博客网 时间:2024/06/05 05:54
在step2的基础上,继续改进
1. 需要检测如果所需目录不存在,能够自动创建之
因为git commit会略过空目录,如果下次从别的机器上git clone这个项目的时候,bin, obj这些目录是不存在的。
使用@if not exist判断,用mkdir 创建目录
2. 需要一个clean pseudotarget用来删除不需要的目录,让项目还原到刚clone下来的状态
使用@if exit判断,用rmdir /S /Q 删除目录
3. 我还需要在build的时候显示一些信息
用@echo
4. 我不想每个cpp文件都写一个description block用来编译成obj文件,太傻了。
改进后的makefile如下:
INCLUDE_DIR = ..\includeOBJ_DIR_X86 = ..\obj_x86BIN_DIR_X86 = ..\bin_x86SRC_DIR = ..\srcEXE_NAME = step.exeOBJ_FILES = \$(OBJ_DIR_X86)\main.obj \$(OBJ_DIR_X86)\printer.obj{$(SRC_DIR)}.cpp{$(OBJ_DIR_X86)}.obj:: @echo Compiling... cl /c /EHsc /Fo$(OBJ_DIR_X86)\ /I$(INCLUDE_DIR) $<$(EXE_NAME): $(OBJ_DIR_X86)\*.objlink /out:$(BIN_DIR_X86)\$(EXE_NAME) $(OBJ_FILES)all: clean create_dirs $(EXE_NAME)clean: @echo "remove folders"@if exist $(BIN_DIR_X86) rmdir /S /Q $(BIN_DIR_X86)@if exist $(OBJ_DIR_X86) rmdir /S /Q $(OBJ_DIR_X86)create_dirs:@echo "create folders"@if not exist $(BIN_DIR_X86) mkdir $(BIN_DIR_X86)@if not exist $(OBJ_DIR_X86) mkdir $(OBJ_DIR_X86)
当运行nmake all的时候,会依次运行clean, create-dirs和 $(EXE_NAME),而下面这段代替了原来手动的配置每一个.cpp编译规则。使用了inference rule,参考文档:
http://msdn.microsoft.com/en-us/library/4hxwz9ch.aspx, 而且应该使用了batch mode rules.
http://msdn.microsoft.com/en-us/library/f2x0zs74.aspx
{$(SRC_DIR)}.cpp{$(OBJ_DIR_X86)}.obj:: @echo Compiling... cl /c /EHsc /Fo$(OBJ_DIR_X86)\ /I$(INCLUDE_DIR) $<并且也没有了copy命令,因为/Fo可以保证obj文件被生成到指定目录。
$< 是必须要用的,删除掉就会报错。
The batch-mode inference rule must use $< as the macro to access dependent files.
- 用NMAKE创建VS2012 C++工程三 自动编译所有的cpp文件
- 用NMAKE创建VS2012 C++工程二 创建目录结构
- 用NMAKE创建VS2012 C++工程一 HelloWorld
- VS2010 nmake编译工程
- VS2012创建的工程让VS2010可编译的方法
- Makefile自动编译目录下的所有.C文件
- makefile编译所有cpp文件
- 选出参加工程编译的所有文件
- 编译目录下所有cpp文件的makefile
- [转]用makefile脚本方式调用vs 2010 的nmake来编译工程的实例
- 用makefile脚本方式调用vs 2010 的nmake来编译工程的实例
- VC 工程中包含 .c 或cpp文件编译时产生的.pch预编译头错误(C1853)
- android 自动加所有cpp文件
- 用Vs2013打开编译vs2012的工程 error MSB8020
- [Bash]把所有的.c文件从命名为.cpp
- .c文件和.cpp文件导致的编译问题
- 请问各位老大,windows平台下用nmake编译的c程序用甚末debug?
- Windows下使用nmake编译C/C++的makefile
- jdk-集合 中新发现的一些使用--------
- poj 1405
- PSM模型(价格敏感测试模型)
- Android Sensor传感器系统架构初探
- linux 软件管理命令
- 用NMAKE创建VS2012 C++工程三 自动编译所有的cpp文件
- 1037. Magic Coupon (25)-PAT
- Hi3515支持NFS-ROOT启动
- 如何写好技术文档
- 滑动视图切换--deckController
- 美国人的思维方式介绍
- Java的ThreadPoolExecutor使用几点建议
- android牵引文件需要注意的几点
- linux进程地址空间(1) fork/clone/vfork详解(1)