gpt4 book ai didi

c++ - Visual Studio 2010 项目文件中的条件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:29 24 4
gpt4 key购买 nike

在 Visual Studio 2010 C++ 项目文件中,是否可以使用条件来确定库的存在,并适本地更改预处理器标志等?

更具体地说,假设我们有一个目录 C:\libraries\MKL,我想#define MKL 并添加 mkl_dll.lib 作为附加依赖项如果该目录存在。

以前我们使用多个解决方案配置来实现这一点,但是这很难维护。

最佳答案

以下内容在粘贴到 F# 项目底部时具有建议的效果(如果 c:\temp\foo.txt 存在,则 #define添加了 THE_FILE_EXISTS)。我希望 C++ 项目只需要进行少量修改,因为它们都使用 MSBuild。这可能有点 hacky,这是我开始工作的第一件事。

<UsingTask TaskName="SeeIfFileExists" TaskFactory="CodeTaskFactory" 
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Path ParameterType="System.String" Required="true" />
<ItExists ParameterType="System.Boolean" Output="true" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
ItExists = System.IO.File.Exists(Path);
]]>
</Code>
</Task>
</UsingTask>
<Target Name="SeeIfFileExistsTarget" BeforeTargets="PrepareForBuild">
<SeeIfFileExists Path="c:\temp\foo.txt" >
<Output TaskParameter="ItExists" ItemName="TheFileExists" />
</SeeIfFileExists>
<PropertyGroup>
<DefineConstants Condition="'@(TheFileExists)'=='True'"
>$(DefineConstants);THE_FILE_EXISTS</DefineConstants>
</PropertyGroup>
</Target>

我突然想到

<PropertyGroup>
<DefineConstants Condition="Exists('c:\temp\foo.txt')"
>$(DefineConstants);THE_FILE_EXISTS</DefineConstants>
</PropertyGroup>

可能就足够了,但远没有那么性感。

关于c++ - Visual Studio 2010 项目文件中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3358733/

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