首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与nmake一起使用的nmake?

与nmake一起使用的nmake?
EN

Stack Overflow用户
提问于 2009-06-03 17:41:27
回答 3查看 3.1K关注 0票数 13

我只是想知道,在visual studio中有没有可以和nmake一起使用的‘nmake’等价物。有人知道吗?

EN

回答 3

Stack Overflow用户

发布于 2009-06-24 17:03:46

您可以使用/showIncludes switch to cl.exe按源文件列出#included的头文件。嵌套的includes用带空格的缩进表示。您还可以使用/Zs开关打开语法检查模式,以提高速度并避免创建.obj文件。

如果您安装了Perl和某个版本的uniq (例如来自GnuWin32),下面的一行代码将转储myfile.cpp使用的唯一标头的列表

代码语言:javascript
复制
cl /Zs /showIncludes /EHsc myfile.cpp | perl -ne "print if s/^Note: including file: *//" | sort | uniq

通过另一个脚本创建相关的nmake规则应该不会太难。

票数 9
EN

Stack Overflow用户

发布于 2011-10-08 15:03:20

我假设你像我一样使用NMAKE来构建项目。我也需要在Windows中使用类似like的工具。因此,我使用MinGW来生成标头依赖项。首先创建Makefile来生成依赖项,我将其命名为Makedepends,如下所示:

代码语言:javascript
复制
    OBJS=... list object files in your project...

    all: Makefile.deps

    Makefile.deps: $(OBJS:.obj=.dep)
        cat $+ > $@
        rm -f $+

    %.dep: %.cpp
        g++ -MM -MG -MT$(@:.dep=.obj) -o$@ $<

在NMAKE将使用的Makefile中,在底部添加以下行:

代码语言:javascript
复制
    !INCLUDE Makefile.deps

当您想要创建依赖项时,可以像这样运行GMAKE:

代码语言:javascript
复制
    make -fMakedepends

然后,您可以像往常一样使用NMAKE构建您的项目:

代码语言:javascript
复制
    nmake

附言:很抱歉我的语言不好,我写得很烂。-_-

票数 5
EN

Stack Overflow用户

发布于 2016-03-19 02:15:13

代码语言:javascript
复制
.SUFFIXES:
.SUFFIXES: .c

all: x.obj

# Sample batch-mode rule which both compiles and produces .dep files suitable for NMAKE.
# Also works around the fact that CL.EXE spits diagnostics in stdout instead of stderr.
# This is equivalent to -MD -MP -MT$@ -MF$(@R).dep in GNU Make + GCC.
CCOMMAND = $(CC) $(CFLAGS) /c $<
.c.obj::
!IF "$(MAKEFLAGS:S=)" == "$(MAKEFLAGS)"
    @echo " $(CCOMMAND)"
!ENDIF
    @$(COMSPEC) /E:ON /V:ON /C "$(CCOMMAND) /showIncludes & echo Exit: !ERRORLEVEL!" | \
        $(COMSPEC) /E:ON /V:ON /C "for /f "tokens=1,* delims=]" %%A in ('find /v /n ""') do \
        @if %%~xB == .c (set _=%%~nB&rem.>!_!.dep&echo %%B) else for /f "tokens=1,2,3,*" %%C in ("%%B") do \
        @if %%C == Note: ((echo !_!.obj: "%%F"&echo "%%F":) >> !_!.dep) \
        else if %%C == Exit: (exit /b %%D) else echo %%B"

# Include the generated deps.
!IF ![(for %i in (*.dep) do @echo !INCLUDE %i) >Build.tmp]
!       INCLUDE Build.tmp
!       IF ![del Build.tmp]
!       ENDIF
!ENDIF
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/946105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档