zoukankan      html  css  js  c++  java
  • windows环境中利用NMake工具编译连接C++源代码

      这篇文章是上一篇文章(http://www.cnblogs.com/LCCRNblog/p/4532643.html)的补充,因此需要先看看上一篇文章。

      最近在写代码的时候,需要通过命令的方式来执行生成的c++源代码文件,因此需要学习有关windows环境下如何使用命令来编译连接c++原文件。这一篇文章是自己慢慢摸索实践得出的。作为自己入门的起点吧,后续还要好好深入理解这方面的知识。

    1、准备

    编写好main.cpp header.h header.cpp这三个源代码文件,并放入一个文件夹test中。

    2、编写NMake文件

    在test文件夹中创建hello.mk文件,并写入如下脚本

    foo :main.obj header.obj
        cl.exe -EHsc main.obj header.obj -o foo
    main.obj:main.cpp
        cl.exe -EHsc -c main.cpp
    header.obj:header.h header.cpp
        cl.exe -EHsc -c header.cpp 
    clean:
        del *.obj *.exe

    注意脚本中空格需要保留,不能随意添加和删除。至于为什么,我暂时也不太清楚,后续慢慢了解学习。

    -----------------------------------------------------------------------------补充 2015年5月29日17:17:56------------------------------------------------

    第二行cl.exe -EHsc main.obj header.obj -o foo,这一行-o之前的参数都是传递个cl.exe的,-o之后的参数(包括-o)是传递个Link.exe的。

    ----------------------------------------------------------------------------------------------------------------------------------------------------------

    我在实践的过程中,把”header.obj:header.h header.cpp“这一行中的header.h去掉,重新执行这个脚本文件,任然能够通过,这个原因我暂时还不太清楚,因为我也只是刚刚接触这方面的知识,还需要进一步的尝试,进一步的理解其中的原理。

    然后在打开cmd,定位到test文件路径,首先执行vcvarsall.bat(方法在上一篇文章中有涉及),然后执行如下命令

    NMake /f hello.mk

    在test文件夹中就会生成foo.exe可执行文件。

    如果执行如下命令

    NMake /f hello.mk clean

    则在test文件夹中生成的所有*.obj和*.exe都会被删除。

  • 相关阅读:
    [Angular] How to show global loading spinner for application between page navigation
    [NgRx] NgRx Data Fetching Solution
    [NgRx] NgRx Entity Adapter Configuration
    [Javascript] Construct a Regex to Match Twitter Mentions with Regexr
    [Dart] Dynamic variable in Dart
    [NgRx] NgRx Runtime Checks
    [NgRx] Setting up NgRx Router Store and the Time-Travelling Debugger
    浅析数据库设计三范式
    建议别买三星Gear:半电脑产品 设计糟糕
    持续集成理论和实践的新进展
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/4535327.html
Copyright © 2011-2022 走看看