You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cargo has the ability to specify that a build script depends on specific environment variables using cargo:rerun-if-env-changed=NAME, but no such mechanism exist for C compilers (that I know of).
This means that when you update an environment variable that your C compiler reads, you have to run cargo clean before the change takes effect. It would be nice if cc could prevent this by outputting a list of known variables that the C compiler it is about to invoke may read.
Clang/LLVM read a bunch more, but they're mostly for debugging, or for stuff like setting up the terminal width, so I don't think those are applicable.
Additionally, C compilers usually rely on a few fundamental ones like PATH, PWD and PATHEXT on Windows that I would honestly expect cargo to handle, though I get why it may be difficult to do right.
The text was updated successfully, but these errors were encountered:
madsmtm
changed the title
Rebuild after modifyng environment variables that C compilers read
Rebuild after modifying environment variables that the C compiler reads
Nov 23, 2023
Cargo has the ability to specify that a build script depends on specific environment variables using
cargo:rerun-if-env-changed=NAME
, but no such mechanism exist for C compilers (that I know of).This means that when you update an environment variable that your C compiler reads, you have to run
cargo clean
before the change takes effect. It would be nice ifcc
could prevent this by outputting a list of known variables that the C compiler it is about to invoke may read.A list of the major ones I've found so far in Clang/LLVM (see also their limited docs about it):
SDKROOT
on Apple targetsVCINSTALLDIR
/VCToolsInstallDir
on WindowsINCLUDE
/CPATH
/C_INCLUDE_PATH
/C_PLUS_INCLUDE_PATH
/OBJC_INCLUDE_PATH
/OBJCPLUS_INCLUDE_PATH
MACOSX_DEPLOYMENT_TARGET
/IPHONEOS_DEPLOYMENT_TARGET
/TVOS_DEPLOYMENT_TARGET
/WATCHOS_DEPLOYMENT_TARGET
on Apple targetsNote that some of these may need to be handled by rustc/cargo itself.
Clang/LLVM read a bunch more, but they're mostly for debugging, or for stuff like setting up the terminal width, so I don't think those are applicable.
Additionally, C compilers usually rely on a few fundamental ones like
PATH
,PWD
andPATHEXT
on Windows that I would honestly expectcargo
to handle, though I get why it may be difficult to do right.The text was updated successfully, but these errors were encountered: