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都会被删除。

  • 相关阅读:
    Java 简单算法--打印乘法口诀(只使用一次循环)
    Java简单算法--求100以内素数
    ubuntu 16.04 chrome flash player 过期
    java 网络API访问 web 站点
    java scoket (UDP通信模型)简易聊天室
    leetcode1105 Filling Bookcase Shelves
    leetcode1140 Stone Game II
    leetcode1186 Maximum Subarray Sum with One Deletion
    leetcode31 Next Permutation
    leetcode834 Sum of Distances in Tree
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/4535327.html
Copyright © 2011-2022 走看看