我在Source文件夹中有我的所有源文件,makefile位于Makefile文件夹中,我希望所有目标文件都放在Objects文件夹中.这是一个我正在研究的C项目.所有这三个文件夹都位于名为Project的文件夹中.
Project文件夹包含:Source Makefile对象
我试图想办法让makefile从Source文件夹中编译源代码,我试过使用:
...
SOURCE_DIR=..\Source
OUTPUT_DIR=..\Objects
.c.obj:
$(CC) $(SOURCE_DIR)\$*.c /Fo$(OUTPUT_DIR)\$*.obj
...
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我最后得到一条错误消息,而说不知道如何制作myfile.obj
我正在学习 makefile,并试图找出如何重用规则。现在我有以下内容:
CPP = cl
CPPFLAGS = /Od /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReport:prompt
.SUFFIXES: .exe .cpp
Exercise35.exe:
$(CPP) Exercise35.cpp $(CPPFLAGS)
debug:
$(CPP) Exercise35.cpp $(CPPFLAGS) /D "_DEBUG"
Run Code Online (Sandbox Code Playgroud)
该规则本质上是使用额外的命令行参数debug重复该规则,这似乎很糟糕。Exercise35有没有更好的办法?
嗨我决定尝试通过命令行和makefile学习如何构建程序,而不是依赖Visual Studio为我做.在熟悉编译成.obj文件和链接的过程之后,我转到了NMake.我编写了一个基本的makefile来尝试将位于多个文件夹中的源文件编译成.obj文件,将.obj文件的每个文件夹链接到.lib文件,然后将.lib文件链接到.exe文件.
CC=cl /c /EHsc /Fo
LIB=lib /OUT:
LINKER=link /OUT:
EXEC_NAME=Test.exe
DEL=del
MAKE=nmake
OUT=.\out
all: $(OUT)\*.lib
$(LINKER)$(EXEC_NAME) *.lib
clean:
$(DEL) $(OUT)
rebuild:
$(MAKE) clean
$(MAKE) all
$(OUT)%.lib: $(OUT)\%\*.obj
$(LIB)%.lib $(OUT)%\*.obj
%(OUT)\%\:
$(CC)$(OUT)\%\ .\%\*.cpp
Run Code Online (Sandbox Code Playgroud)
当我尝试用nmake all它运行它告诉我:NMAKE : fatal error U1073: don't know how to make '.\out\*.lib'
提前致谢.
我有一个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容器并挂载文件夹并找出以下内容:
docker cp project/ container:C:/test/和运行构建脚本时,它会找到所有文件并成功编译.所以似乎nmake在docker中遍历已安装的容器时遇到了麻烦.知道如何解决这个问题吗?我宁愿避免将项目复制到容器中,因为与简单地安装签出的项目相比,这需要相当长的时间.
我正在尝试使用 PostgreSQL 作为矢量数据库。同样,我使用此处提供的说明将 PostgreSQL 安装到我的 Windows 系统中。
\n为了安装 pgvector,我按照本页中给出的说明进行操作。
\n我正在尝试在使用 Windows Server 2016 操作系统的远程计算机中完成此设置。\nPostgreSQL 版本:15.3
\n我无法成功安装 pgvector 扩展。\n运行该nmake /F Makefile.win命令时,出现以下错误:
\n\n\n致命错误 C1083: 无法打开包含文件 \xe2\x80\x98crtdefs.h\xe2\x80\x99: 没有这样的文件或目录
\n
我也尝试使用conda安装。\n命令:conda install -c conda-forge pgvector\n使用conda安装后创建矢量扩展时出现的错误如下:
\n
编辑 1: \n根据以下问题更新帖子。
\n\n\n文件 crtdefs.h 在您的系统上在哪里?(可能有多个。)调用 cl.exe 时 INCLUDE 环境变量的值是多少?
\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 …
几个星期前我开始使用Qt,我真的非常喜欢它.我现在需要在我的应用程序中包含图形,经过一些研究,我发现Qwt是最好的方式(而不是自己从头开始做所有事情).我已经在这里工作了几天,我无法弄清楚如何安装它.我使用32位Windows7.我按照INSTALL文件中的说明操作:
来自cmd - >
qmake qwt.pro
nmake
Run Code Online (Sandbox Code Playgroud)
在nmake结束后,我留下了错误
C:\Users\Peyo\Downloads\qwt-6.0.1>qmake qwt.pro
C:\Users\Peyo\Downloads\qwt-6.0.1>nmake
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
cd src\ && "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\nmake.e
xe" -f Makefile
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\nmake.exe" -f Make
file.Debug all
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
moc qwt_dyngrid_layout.h
moc qwt_magnifier.h
moc qwt_panner.h
moc …Run Code Online (Sandbox Code Playgroud) all: prd.exe
CC=cl
CFLAGS=-O2 -I../src -I. /W4
LDFLAGS = /Zi
LIBSRC = $(addprefix ../lib/, \
open.c malloc.c \
) \
$(addprefix ../src/, \
main.c \
) \
helper.c
LIBOBJS = $(LIBSRC:.c=.o)
prd.exe: ../src/main.obj
$(CC) $(LDFLAGS) -Fe$@ *.o
../src/main.obj: ../src/main.c
$(CC) $(CFLAGS) $(LIBOBJS) -c $< -Fo $@
.c.o:
$(CC) $(CFLAGS) $(LIBOBJS) -c $< -Fo $@
.c.i:
$(CC) $(CFLAGS) $(LIBOBJS) -C -E $< > $@
clean:
del /s /f /q ..\lib\*.o ..\src\*.o *.o *.exe *.pdb
distclean: clean
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
致命错误 U1000:语法错误 : ')' …
我正在将GNU Make makefile翻译为Microsoft Visual Studio Makefile.我有三个疑问:
1)如何替换字符串.例如在包含以下内容的文件夹中
namespace_type_function1.cpp
namespace_type_function2.cpp
namespace_type_function3.cpp
Run Code Online (Sandbox Code Playgroud)
我想改变类型让我们说"INT"字符串,所以我终于得到了
namespace_INT_function1.cpp
namespace_INT_function2.cpp
namespace_INT_function3.cpp
Run Code Online (Sandbox Code Playgroud)
2)如何以类似的方式添加前缀3.如何以相同的方式添加后缀.
我正在尝试使用以下行在 Windows 上构建 cURL:
nmake vc-x64 mode=dll VC=10 MACHINE=x64
Run Code Online (Sandbox Code Playgroud)
现在我在构建之前已经完成了此设置:
set PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64;%PATH%
set INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include";"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"
set LIB="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64";"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64"
set LIBPATH="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64"
set PATH="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64";%PATH%)
set INCLUDE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include";%INCLUDE%
set LIB="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64";%LIB%
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
rc /dDEBUGBUILD=0 /Fo ..\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-w
inssl-obj-lib\libcurl.res ..\lib\libcurl.rc
Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
Copyright (C) …Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用 CMake,
我正在将一个工作项目从 Visual Studio 转换为 Cmake 并使用 NMake 进行构建。当前项目为 x64 和 x86 构建
我当前的 CMakeLists.txt 非常简单:
cmake_minimum_required(VERSION 3.13.0)
project(SimManager CXX)
ADD_DEFINITIONS(-DUNICODE)
ADD_DEFINITIONS(-D_UNICODE)
set(CMAKE_CXX_FLAGS -G"NMake Makefiles")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(SimManager
Source/main.cpp
)
set_target_properties (${PROJECT_NAME} PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE
)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'x86'
Run Code Online (Sandbox Code Playgroud)
我了解 NMake 选择使用哪个编译器(x86 或 x64)的方式是打开适当的控制台终端。我在用Select x64 Native Tools Command Prompt for VS 2017
被执行的链接器的命令行是:
command "C:\PROGRA~2\MIB055~1\2019\ENTERP~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\SimManager.dir\objects1.rsp /out:SimManager.exe /implib:SimManager.lib /pdb:E:\Projects\SimManager\Debug\SimManager.pdb /version:0.0 …