Open SuibianP opened 1 month ago
Without changes to gyp and without breaking backward compatibility, the only way I can think of to pass arbitrary parameters is to prepend some character illegal in msbuild target names, such as ?
or (
. It is going to be rather ugly that way though... node-gyp build target1 target2 ?/p:CLToolExe="C:\bin\LLVM\clang-cl.exe" ?/p:CLToolPath="C:\bin\LLVM"
A reasonable compromise might be to pass through all arguments beginning with /
to msbuild
, on the assumption that target names rarely begins with a slash (although it is probably legal).
@cclauss any comments?
Sorry, I am not a Windows user.
I am trying to build the llnode module on Windows, which can only be built with clang-cl. The project previously (ab)used the passthrough of arguments to msbuild to configure the
CLToolPath
andCLToolExe
properties, which has hence been fixed in #1164. (nodejs/llnode#321, nodejs/llnode#377)I have attempted the following to no avail,
binding.gyp
This does put the properties into the vcxproj, but in the
ClCompile
section. https://stackoverflow.com/a/31362960/12385184CC
andCXX
environment variables (https://github.com/nodejs/node-gyp/issues/2813#issuecomment-1462523117)This does have some effect on the configure phase, but only accepts GCC (not CL) compatible compilers, and it has no effect on the building phase which still uses CL.exe.
This issue might be a case of #1537 if there is no special way to specify the compiler executable on Windows.