使用具有不同工具集的CL.exe进行编译

时间:2017-09-20 15:03:30

标签: 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似乎没有重新认识它,我收到错误:

Unknown Option: /PlatformToolset

有没有办法可以使用cl.exe更改工具集,而不使用msbuild和vcproj?

1 个答案:

答案 0 :(得分:1)

只是因为有人需要它,我能够解决这个问题。我将此选项添加到cl.exe:

/D \"_USING_V110_SDK71_\"

我还修改了这个选项:

/SUBSYSTEM:WINDOWS

/SUBSYSTEM:WINDOWS,5.01

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