标签: nmake

在GNU make中一次编译多个**已更改的**源文件

我知道有几个问题有类似的标题,但似乎没有提供我需要的答案(纠正我,如果我错了).

考虑这个makefile:

SOURCES=file1.cpp file2.cpp file3.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=myprog

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CXX) -o $@ $(OBJECTS)

file1.o: file1.cpp file1.h
file2.o: file2.cpp file2.h file1.h
file3.o: file3.cpp

.cpp.o:
    $(CXX) $(CXXFLAGS) -c -o $@ $<
Run Code Online (Sandbox Code Playgroud)

如果我更改file1.h,则运行以下命令:

g++ -c -o file1.o file1.cpp
g++ -c -o file2.o file2.cpp
g++ -o myprog file1.o file2.o file3.o 
Run Code Online (Sandbox Code Playgroud)

我想拥有的是:

g++ -c file1.cpp file2.cpp
g++ -o myprog file1.o file2.o file3.o 
Run Code Online (Sandbox Code Playgroud)

(我知道我不能用GCC指定对象输出目录,但我可以使用它;应该可以解决一些cd命令.)

在nmake中,这是通过双冒号推理规则(所谓的" 批处理模式规则")来完成的.基本上,它将多个目标的推理规则(例如".obj.cpp:")分组,并为所有依赖项调用编译器,而不是每个文件调用一次.该$<变量获取依赖项列表,而不仅仅是第一个.

现在我们正在使用并行构建(make -j),但它有自己的问题,VC++编译器在一次调用模式下运行得更好,所以我更喜欢使用它.

c gcc nmake makefile

8
推荐指数
1
解决办法
1069
查看次数

构建PBRT v2错误 - 错误1错误U1077:'if':返回代码'0x1'

我有visual studio 2013社区版,我得到了pbrt-v2代码库并且一直在尝试构建解决方案,但这是我遇到的错误之一(它与nmake似乎有关):

 NMAKE - Error  1 error U1077: 'if' : return code '0x1'
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办,因为其他说明似乎不太清楚.任何帮助将不胜感激!谢谢你,祝你有个美好的一天!

-------------- UPDATE --------------------

我得到了它在Visual Studio 2013上编译和构建.问题是我认为我已经过时的PBRT文件了.基本上我做的是我通过github检查了项目,我认为应该可以工作,但后来我注意到你可以在网站上下载最新的pbrt-v2文件.事实上,作者有一个VS studio 2015的解决方案文件,我删除并重新安装了2013年,因为我认为这是问题所在.无论如何,使用我直接从网站下载的文件中的2012,我能够构建解决方案.我会保留这个问题以防万一有人遇到类似的问题.

c++ nmake visual-studio-2013 pbrt

8
推荐指数
1
解决办法
384
查看次数

将nmake makefile转换为Visual Studio 2005项目

我们在这里使用nmake构建了一些旧的C代码.

是否有自动方式将Makefile拉入Visual Studio 2005并创建项目?一些在MSDN上搜索表明VS6可以做到这一点,但看起来VS7/8放弃了这个功能.

如有必要,我可以使用project.mak文件作为参考从头开始构建项目,但对于更复杂的项目,这可能不可行.

c nmake visual-studio-2005

7
推荐指数
1
解决办法
2万
查看次数

nmake.exe一直抱怨我没有给它的标志.(U1065)

nmake.exe从我跑的时候make我得到这个错误:

Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1065: invalid option '-'
Run Code Online (Sandbox Code Playgroud)

但我不会在任何地方作为选项传递' - '.

如果我从make外部运行相同的命令它可以正常工作.

windows nmake makefile

7
推荐指数
1
解决办法
3572
查看次数

nmake附加到变量

  • 效用:NMake
  • 平台:Windows 7

我有以下Makefile

FILE = $(shell) *.c
FILE += $(shell) *.cpp

exec:
    @echo $(FILE)
Run Code Online (Sandbox Code Playgroud)

这与make完美搭配.这会引发nmake的以下错误

makefile(2) : fatal error U1036: syntax error : too many names to left of '='
Stop.
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?

没有线

FILE += $(shell) *.cpp
Run Code Online (Sandbox Code Playgroud)

nmake工作得非常好.

nmake makefile

7
推荐指数
1
解决办法
4656
查看次数

如何清理nmake生成的obj和lib文件

我在VS 2012控制台中使用nmake来编译GDAL,我想知道哪个命令可以帮我删除上次nmake命令生成的所有文件.

c:\gdal>nmake clean

Microsoft (R) Program Maintenance Utility Version 11.00.60610.1
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1073: don't know how to make 'clean'
Stop.
Run Code Online (Sandbox Code Playgroud)

nmake

7
推荐指数
1
解决办法
9309
查看次数

在Windows 7 64位上构建OpenSSL时遇到问题

我正在尝试在Windows 7上为一个工作项目构建OpenSSL,但我遇到了麻烦.

INSTALL指令说明了这样做的简单方法:

Quick Start
-----------

If you want to just get on with it, do:

on Windows (only pick one of the targets for configuration):

$ perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE }
$ nmake
$ nmake test
$ nmake install
Run Code Online (Sandbox Code Playgroud)

我能运行perl配置VC-WIN64A没问题.但是,当我尝试运行nmake时,我得到以下输出:

>C:\Users\jget952\Downloads\openssl-1.1.0f>"C:\Program Files (x86)\Microsoft >Visual Studio 14.0\VC\bin\amd64\nmake.exe"
>
>Microsoft (R) Program Maintenance Utility Version 14.00.24225.1
>Copyright (C) Microsoft Corporation.  All rights reserved.
>
>"C:\Program Files (x86)\Microsoft Visual Studio 
>14.0\VC\bin\amd64\nmake.exe" depend && "C:\Program …
Run Code Online (Sandbox Code Playgroud)

openssl nmake compiler-errors makefile visual-studio

7
推荐指数
1
解决办法
1105
查看次数

对于Visual Studio,使用qmake在同一源代码树中构建32和64

我正在尝试添加一个必须在为Visual Studio 2010 64位配置的源树中构建为32位库(我们称之为sdk32)的项目.即每个项目都是64位库或应用程序,但我需要这个sdk32项目作为SDK的32位包装器.我知道在Linux中可以使用-m32标志来编译器(如此处所解释的那样使用QMAKE来构建项目的32位和64位版本); 但是有可能有一个类似的解决方案,所以在配置为VS2010 64bit(调用其vcvarsall.bat x64)的控制台中,在为我的树运行qmake -r后,我得到为x64配置的每个项目,但sdk32将配置为Win32的?它也适用于qmake -r -tp vc

到目前为止,我能想到的唯一解决方案是一个肮脏的技巧,调用一个脚本(如下所述:Qt:在运行之前运行一个脚本),它将"理解"vcxproj和Makefile中的x64标签并用Win32替换它们,但是这个解决方案对我来说似乎很脆弱,而且过于依赖于项目现在的样子,这将在未来以一种舒适的方式阻止对配置的更改.我确信之前已经发生了这种情况,但是谷歌搜索了近一天之后我找不到解决办法.有什么建议?

PS:"sdk32"项目根本不需要QT.问题是我们使用qmake作为Makefile和.vcxproj文件创建步骤(因为许多其他项目确实使用Qt).

qt qmake nmake visual-studio

6
推荐指数
0
解决办法
517
查看次数

Nmake无法在docker mount中找到文件

我有一个docker容器,用于编译项目,构建设置并将其导出容器.为此,我安装了签出的源($(Build.SourcesDirectory):C:/git/在TFS docker run任务的卷部分中使用)和2个不同文件夹中的输出文件夹.现在我的项目包含一个子模块,该子模块也被正确检出,所有文件都在那里.但是,当我的脚本执行nmake时,我收到以下错误:

Cannot find file: \ContainerMappedDirectories\347DEF6A-D43B-48C0-A5DF-CE228E5A10FD\src\Submodule\Submodule.pro

映射容器的路径映射到C:/git/Windows docker容器内部(在Windows主机上运行).我能够使用交互式PowerShell启动docker容器并挂载文件夹并找出以下内容:

  1. 所有文件都在容器中.
  2. 在执行docker cp project/ container:C:/test/和运行构建脚本时,它会找到所有文件并成功编译.
  3. 当使用powershell在docker中复制已安装的项目并启动构建脚本时,它也可以工作.

所以似乎nmake在docker中遍历已安装的容器时遇到了麻烦.知道如何解决这个问题吗?我宁愿避免将项目复制到容器中,因为与简单地安装签出的项目相比,这需要相当长的时间.

mount nmake compilation docker

6
推荐指数
0
解决办法
76
查看次数

无法安装 PostgreSQL 的 pgvector 扩展 [Windows]

我正在尝试使用 PostgreSQL 作为矢量数据库。同样,我使用此处提供的说明将 PostgreSQL 安装到我的 Windows 系统中。

\n

为了安装 pgvector,我按照本页中给出的说明进行操作。

\n

我正在尝试在使用 Windows Server 2016 操作系统的远程计算机中完成此设置。\nPostgreSQL 版本:15.3

\n

我无法成功安装 pgvector 扩展。\n运行该nmake /F Makefile.win命令时,出现以下错误:

\n
\n

致命错误 C1083: 无法打开包含文件 \xe2\x80\x98crtdefs.h\xe2\x80\x99: 没有这样的文件或目录

\n
\n

运行 nmake /F Makefile.win 时出错

\n

我也尝试使用conda安装。\n命令:conda install -c conda-forge pgvector\n使用conda安装后创建矢量扩展时出现的错误如下:

\n

创建扩展错误

\n

编辑 1: \n根据以下问题更新帖子。

\n
\n

文件 crtdefs.h 在您的系统上在哪里?(可能有多个。)调用 cl.exe 时 INCLUDE 环境变量的值是多少?

\n
\n

crtdefs.h 文件位置:C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.36.32532\\include

\n

早些时候我没有添加 INCLUDE 环境变量。现在,我根据某些类似的错误(无法打开 include/lib 文件)添加了 INCLUDE 和 LIB 环境变量。我必须分别添加来自 Microsoft Visual studio 和 Windows …

postgresql nmake vector-database pgvector

6
推荐指数
1
解决办法
4073
查看次数