gpt4 book ai didi

windows - 在预构建事件中设置环境变量并在编译步骤中使用

转载 作者:可可西里 更新时间:2023-11-01 12:35:20 26 4
gpt4 key购买 nike

在 Visual Studio 2003 中,我试图在预构建事件中设置一个环境变量,然后在编译步骤中使用该变量,但该值似乎没有传播。例如,如果预构建事件包含此内容(直接或在批处理文件中):

set MY_LIB_VERSION=1.0.0

AdditionalIncludeDirectories 有这个:

c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include

那么如果 my_lib_v1.0.0 我希望编译能够工作目录存在。但是相反,我得到了

c:\path\to\prog\my_prog.c(22) : fatal error C1083: Cannot open include file: 'my_lib.h'Project : warning PRJ0018 : The following environment variables were not found:$(MY_LIB_VERSION)

我推断在预构建事件中设置的环境变量因此没有传播到编译步骤,但我可能遗漏了一些东西。

如何在预构建事件中设置环境变量并在编译步骤中使用它?

(或者,定义一次库版本并多次为 AdditionalIncludeDirectories 和 AdditionalLibraryDirectories 使用它的任何其他合理方法也可以。)


更新:我最终以不同的方式解决了我们的问题。我们正在使用 Subversion,并设置 svn:externals名为 dependencies 的项目源子目录上的属性, 这样项目的 checkout 将另外 checkout <svn_path>\libraries\my_lib_v1.0.0并称之为dependencies\my_lib在工作副本中。然后项目设置可以引用dependencies\my_lib\include之类的。升级到 1.0.1 版 my_lib然后只需编辑 svn:externals 即可属性 -- 代码和项目设置不需要更改。

最佳答案

比最初提出这个问题的时间晚了 11 年。我正在使用 VS 2019

如果你想在你的事件中分配变量,比如......

设置 ABC=123

那么您不能使用 $(ABC),因为 $(ABC) 在交给命令行运行之前已经过处理。

您必须使用命令行使用的 %ABC%。它不知道 $(ABC) 是什么,因为它只能被 visual studio 理解。

为了使事情更加复杂,visual studio 事件编辑器使用 % 作为转义字符。我注意到以 %D 开头的东西不好,%K、%Z 和 %K 是好的。

显然您可以使用 %25 作为 % 的转义字符。

%DESTDIR% 不会因为转义而出现乱码 - 因此将其更改为 %25DESDIR%25 可以修复它。

关于windows - 在预构建事件中设置环境变量并在编译步骤中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/419979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com