首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Visual生成中有条件地排除项目

从Visual生成中有条件地排除项目
EN

Stack Overflow用户
提问于 2014-04-06 12:53:28
回答 1查看 1.3K关注 0票数 0

我有一个VisualStudio2012库项目(VC++),如果某个SDK可用,它包括某些类。我在属性表中通过msbuild Condition实现了这一点:

代码语言:javascript
复制
<Choose>
    <When Condition="Exists('C:\OFED_SDK\')">
        <PropertyGroup>
            <OfedSdkDir>C:\OFED_SDK\</OfedSdkDir>
        </PropertyGroup>
    </When>
 </Choose>
 [...]
 <ItemDefinitionGroup Condition="$(OfedSdkDir) != ''">
     <ClCompile>
          <AdditionalIncludeDirectories>$(OfedSdkDir)Inc\; %(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
          <PreprocessorDefinitions>HAVE_OFED_SDK; %(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
 [...]

某些功能只有在定义HAVE_OFED_SDK时才可用。这工作得很好。

该解决方案还包含几个用于测试库项目的项目。有条件编译的类的测试在一个单独的项目中。

我的问题是:我可以根据上面提到的条件(Condition="$(OfedSdkDir) != ''是否是true来构建这个项目吗?如果是这样的话,我怎么做呢?我需要一个解决方案,也可以在从VS构建时工作。

编辑:我知道马丁提出的解决方案,但我正在寻找一种以编程方式工作的解决方案(即不允许用户通过GUI启用“错误”配置)。

编辑:我发现我可以将(Condition="$(OfedSdkDir) != ''添加到源文件的ClCompile中,这几乎实现了我想要的,但仍然运行项目的构建过程。

EN

回答 1

Stack Overflow用户

发布于 2014-04-06 12:59:38

只需设置不试图构建要排除的相关项目的不同解决方案配置即可。

例如,将其称为“Release OFED”,并取消在该配置中编译的那些项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22894313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档