c++ - 使用不同工具集的 CL.exe 进行编译

标签 c++ visual-c++ compilation linker cl

我需要使用不同的平台工具集自动编译程序。编译是使用 cl.exelink.exe 完成的,如下所示:

cl.exe file.c /GS- /PlatformToolset=vc140xp /analyze- /W3 /Gy /Zc:wchar_t /Gm- /Od /Zc:inline /fp:precise /D \"WIN32\" /D \"_WINDOWS\" /D \"_UNICODE\" /D \"UNICODE\" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /Fa\"\" /EHsc /nologo /Fo\"\" /Fp\"\" /diagnostics:classic /link %link_additional% /ENTRY:wWinMain /SUBSYSTEM:WINDOWS /MANIFEST:EMBED  /NXCOMPAT /DYNAMICBASE \"kernel32.lib\" \"user32.lib\" \"gdi32.lib\" \"winspool.lib\" \"comdlg32.lib\" \"advapi32.lib\" \"shell32.lib\" \"ole32.lib\" \"oleaut32.lib\" \"uuid.lib\" \"odbc32.lib\" \"odbccp32.lib\" /DEBUG:NONE /MACHINE:%arch% /OPT:REF /SAFESEH /INCREMENTAL:NO /SUBSYSTEM:WINDOWS /MANIFESTUAC:\"level = 'asInvoker' uiAccess = 'false'\" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1\

我正在使用开关 /PlatformToolset=vc140xp 但是,cl.exe 似乎没有重新启动它,我得到一个错误:

未知选项:/PlatformToolset

有没有一种方法可以使用 cl.exe 更改工具集,而无需 msbuild 和 vcproj?

最佳答案

以防万一有人需要它,我能够解决这个问题。我将此选项添加到 cl.exe:

/D \"_USING_V110_SDK71_\"

我还修改了这个选项:

/SUBSYSTEM:WINDOWS

/SUBSYSTEM:WINDOWS,5.01

应用程序在 windows xp 上成功运行后。如果你在你的 exe 中大量使用 crt,你可能会遇到一些问题,在我的 exe 中我只需要 CRT 来定义 Tls 回调,没有 CRT 它们就无法工作,所以我想也许这就是为什么这对我有用

关于c++ - 使用不同工具集的 CL.exe 进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46325589/

相关文章:

C++/CLI - 垃圾收集的效率如何?它真的适合我吗?

haskell - 惰性评估是如何以不需要比所产生的 yield 更多的开销的方式实现的?

c++ - 构建 64 位版本的二进制文件有什么大不了的?

c++ - 显式共享是什么意思?

c - 对象符号覆盖库符号?

c++ - 在现有的visual studio 2017中下载c++

delphi - 如何实现更小的可执行文件大小?

compilation - 编译二进制文件

c++ - 同步线程创建和销毁(静态)对象

c++ - G++ & Clang++ - 命名空间 std _GLIBCXX_VISIBILITY(默认)